<?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>90935</bug_id>
          
          <creation_ts>2012-07-10 21:41:53 -0700</creation_ts>
          <short_desc>Add parallel image decoders</short_desc>
          <delta_ts>2014-02-05 10:58:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>93590</dependson>
    
    <dependson>90443</dependson>
    
    <dependson>90755</dependson>
    
    <dependson>90757</dependson>
    
    <dependson>90869</dependson>
    
    <dependson>93174</dependson>
          <blocked>91203</blocked>
    
    <blocked>90375</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Kwang Yul Seo">skyul</assigned_to>
          <cc>dongseong.hwang</cc>
    
    <cc>gram</cc>
    
    <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>666324</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-10 21:41:53 -0700</bug_when>
    <thetext>Refer to the following design document for detailed explanation:

https://docs.google.com/document/pub?id=12gf7MhNHfupeR3GdRF-h2Vzg86viCbwXq8_JByHKlg0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666361</commentid>
    <comment_count>1</comment_count>
      <attachid>151601</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-10 22:37:22 -0700</bug_when>
    <thetext>Created attachment 151601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666495</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-11 01:15:05 -0700</bug_when>
    <thetext>This patch makes ImageElement and SVGImageElement be able to decode a image using parallel image decoder.

We will summit another patch that the background, mask and border image of CSS box model can use parallel image decoder soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667422</commentid>
    <comment_count>3</comment_count>
      <attachid>151864</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-11 22:53:11 -0700</bug_when>
    <thetext>Created attachment 151864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667424</commentid>
    <comment_count>4</comment_count>
      <attachid>151865</attachid>
    <who name="Kwonjin Jeong">gram</who>
    <bug_when>2012-07-11 22:59:02 -0700</bug_when>
    <thetext>Created attachment 151865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667427</commentid>
    <comment_count>5</comment_count>
    <who name="Kwonjin Jeong">gram</who>
    <bug_when>2012-07-11 23:02:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=151865) [details]
&gt; Patch

Oops. I am sorry this patch belongs to Bug 90869!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668739</commentid>
    <comment_count>6</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-13 01:48:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This patch makes ImageElement and SVGImageElement be able to decode a image using parallel image decoder.
&gt; 
&gt; We will summit another patch that the background, mask and border image of CSS box model can use parallel image decoder soon.

We uploaded the patch in Bug 91203</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671128</commentid>
    <comment_count>7</comment_count>
      <attachid>151864</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-17 03:28:52 -0700</bug_when>
    <thetext>Comment on attachment 151864
Patch

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

&gt; Source/WebCore/CMakeLists.txt:1203
&gt; +    platform/graphics/ParallelImageDecoder.cpp

Nit : Please add file by alphabetical order.

&gt; Source/WebCore/Target.pri:1106
&gt; +    platform/graphics/RetainedModeBitmapImage.cpp \

ditto.

&gt; Source/WebCore/Target.pri:2246
&gt; +    platform/graphics/RetainedModeBitmapImage.h \

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671724</commentid>
    <comment_count>8</comment_count>
      <attachid>152868</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-17 16:26:24 -0700</bug_when>
    <thetext>Created attachment 152868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671725</commentid>
    <comment_count>9</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-17 16:26:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 151864 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151864&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/CMakeLists.txt:1203
&gt; &gt; +    platform/graphics/ParallelImageDecoder.cpp
&gt; 
&gt; Nit : Please add file by alphabetical order.
&gt; 
&gt; &gt; Source/WebCore/Target.pri:1106
&gt; &gt; +    platform/graphics/RetainedModeBitmapImage.cpp \
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebCore/Target.pri:2246
&gt; &gt; +    platform/graphics/RetainedModeBitmapImage.h \
&gt; 
&gt; ditto.

Thanks. Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671822</commentid>
    <comment_count>10</comment_count>
      <attachid>152891</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-17 18:00:39 -0700</bug_when>
    <thetext>Created attachment 152891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671824</commentid>
    <comment_count>11</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-17 18:01:31 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=152891) [details]
&gt; Patch

Changed the threshold to 300 * 300.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673367</commentid>
    <comment_count>12</comment_count>
      <attachid>153219</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-19 04:04:42 -0700</bug_when>
    <thetext>Created attachment 153219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673368</commentid>
    <comment_count>13</comment_count>
      <attachid>153220</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-19 04:06:57 -0700</bug_when>
    <thetext>Created attachment 153220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673371</commentid>
    <comment_count>14</comment_count>
      <attachid>153221</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-19 04:11:43 -0700</bug_when>
    <thetext>Created attachment 153221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673372</commentid>
    <comment_count>15</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-19 04:14:36 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=153221) [details]
&gt; Patch

Amended RenderLayerBacking in order to not decode the image repeatedly.

After sending the decoding complete image to each platform accelerated compositing tree, RenderLayerBacking should not decode again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678701</commentid>
    <comment_count>16</comment_count>
      <attachid>154506</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-25 18:16:54 -0700</bug_when>
    <thetext>Created attachment 154506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678707</commentid>
    <comment_count>17</comment_count>
      <attachid>154507</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-25 18:21:38 -0700</bug_when>
    <thetext>Created attachment 154507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678708</commentid>
    <comment_count>18</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-25 18:22:43 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=154507) [details]
&gt; Patch

Rebased to the latest revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680222</commentid>
    <comment_count>19</comment_count>
      <attachid>154871</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-27 00:55:12 -0700</bug_when>
    <thetext>Created attachment 154871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680226</commentid>
    <comment_count>20</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-27 00:57:00 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Created an attachment (id=154871) [details]
&gt; Patch

Fix the bug to cause crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976870</commentid>
    <comment_count>21</comment_count>
      <attachid>154871</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-05 10:58:46 -0800</bug_when>
    <thetext>Comment on attachment 154871
Patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151601</attachid>
            <date>2012-07-10 22:37:22 -0700</date>
            <delta_ts>2012-07-11 22:53:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120711143721.patch</filename>
            <type>text/plain</type>
            <size>92811</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIyZGE2NWQ5OTE4ODMx
YmFiYzJkZGQ5NDQ2ZDAwZWQ2MjhmZWMxYi4uYWQ5NTczMzdmZjRjZDZhZGJjZDNlYTQ4NDYwYmIx
NWZlM2Y2MGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NyBAQAorMjAxMi0wNy0xMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpsYXN0RGVj
b2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRMYXN0RGVjb2RlZFJv
dyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VS
ZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVy
Ojpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xl
YXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKwogMjAxMi0wNy0wOSAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZWZhY3RvcmluZyBtZXRhZGF0YSBv
ZiBCaXRtYXBJbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDJkMmI5N2U1NTE2
NThlMzYxM2JlYzk5ODEwOTVmNTg0NDkzMjFiYS4uNGRiYzRmOTVhOTA1YmFiZmFjOWNiZWZlZGYy
ZGFhNTBkM2FmOGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxMi0wNy0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KworICAgICAgICBBZGQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcg
YW5kIEt3YW5nIFl1bCBTZW8uCisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAg
ICAgICB0aW1lIGluIGxvYWRpbmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxl
IGltYWdlIGRlY29kaW5nIHRocmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFj
a2dyb3VuZC4KKworICAgICAgICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1
bWVudC9wdWI/aWQ9MTJnZjdNaE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAK
KyAgICAgICAgZm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgICogc3JjL1dlYklt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgorICAgICAg
ICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJv
bURhdGEpOgorCiAyMDEyLTA3LTAzICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGUwNzM3ZDhmZDVjODMxMzc3ODdkZGIyZjAxMDc5MWZjOTI3
ZmFiNzguLjBlMjFkYWE3OTU1ODcxM2E2MTg5MGM0OTg4NjMyYTA5ZmI1YjUzMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xMTk5LDYgKzExOTksOCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBhN2ExNmUzNTkwODA2ZGU3Y2E0NDFkMjYyNWRiYzAxMTJkOTE2
Yzg4Li4yMWM2NDlkMDNjMmY1MWVmNTBhYjViNzk2NjY0MDA4ZDk2MTE3NmM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMxOTMsNiArMzE5MywxMSBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDAxNmQ3
MGRhNjMwNjBlNmI0MTIzZjc1ODYxMjkwNTRhYjk5ZmNjOTcuLjE3ODBlYTNjYWI2NzJlOTI2NjNi
NDJmNGMzZjczNDdkYWFjZmRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTEwMyw2ICsxMTAzLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseS5jcHAgXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFp
bmVkTW9kZUJpdG1hcEltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAgXApAQCAtMTEyNiw2ICsxMTI3
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlv
bi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhcmFs
bGVsSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIFwKQEAgLTIyNDEsNiArMjI0Myw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBcCiAgICAg
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmggXApAQCAtMjMwNyw2ICsy
MzEwLDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNo
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJP
YnNlcnZlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDY4MTBjODgyZWY2ZWE4ZTFlYTM1NDBmM2Zm
NTA5ZTFhYTlhNjhlNDMuLjNiZTZkMDEyMzY3NDJkNzNiOTFkMzJmN2ZkZTMzZWI3N2I5NTA1N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MDEsMTEgKzM1MDEsMTYgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFy
YWxsZWxJbWFnZURlY29kZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA0ZDJlYzBiYWY1MTI5
OGY3NmRkYzgyZGU3YjgyMmMxYWNmNWQ5ODAzLi44NWZhOTUxNzEyN2I2NGUxODUxZGI0YzUwZTRk
YTQxZDY2MDRhYThlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtMjkzOTAsNiArMjkzOTAsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVs
SW1hZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
Mjk0MTgsNiArMjk0MzAsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2Rj
YTdiNDFiOTkyZTEzZjE0N2YyNGEwMWUyZjdiYWFjOWZlNzNiYi4uOWNiNzRlNGI5MzRjNDlkMTUz
M2FmZjg4NzQ5ZTNjMjFkNDEwNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxOCw2ICsxNDE4LDggQEAKIAkJNEIzMDQz
Q0QwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4
MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQx
IC8qIEltYWdlU291cmNlQ0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICov
OyB9OworCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIz
NDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsg
fTsKKwkJNUIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5
MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJ
NEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMz
OUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlQ0YuY3BwICovOyB9OwpAQCAtODUwOCw2ICs4NTEwLDggQEAKIAkJNEIzMDQzQ0Iw
QUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2
RjMwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1MzQsNiArMTk1MzgsOCBAQAogCQkJ
CUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUz
NTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1
MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4
MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJ
CQkJNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgg
Ki8sCiAJCQkJQjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4
Q0cuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NDcwLDYgKzI0NDc2LDcgQEAK
IAkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyog
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUw
RDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwQTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwQTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNv
bnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY0OSw2ICsyNzY1Niw3IEBACiAJCQkJNTE0
Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8q
IFJlc291cmNlUmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1
MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQzMTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDMxNjBBNjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBS
ZXZlcmJDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0
ZDRjNjE5OTEzZDFiMzQ2OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2
MGM0ODFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcApAQCAtNjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAg
LCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFs
c2UpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5
LDEyIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgICAgICAvLyBOT1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBo
ZXJlLCB0aGF0IHdpbGwgdHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGku
ZS4gbmV2ZXItZGVjb2RlZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFz
cykgZnJhbWVzIQotICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNb
aV0ubV9pc0NvbXBsZXRlKQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJy
ZW50IGZyYW1lLCBiZWNhdXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAg
ICAgICAvLyBpbiByZXRhaW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRo
aXMgZGVjb2RlZCBpbWFnZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlz
IHJlbW92ZWQgaGVyZSwgdGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0
ZSBib3guCisgICAgICAgIC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRl
ciB3aGVuIHJldGFpbmVkIG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmICht
X2ZyYW1lc1tpXS5tX2ZyYW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJy
ZW50RnJhbWUgIT0gaSkKICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ld
LmNsZWFyKHRydWUpID8gMSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3Rp
ZnkoZnJhbWVzQ2xlYXJlZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6
OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFt
ZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2Zy
YW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2Fj
aGluZ0ZyYW1lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4
aXN0IHdoZW4gbV9pc0NvbXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3
IGZyYW1lIGV2ZW4gaWYgbV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpk
YXRhQ2hhbmdlZCBmb3IgZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4
ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJh
bWVzW2luZGV4XS5tX2lzQ29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAg
IG1faXNDYWNoaW5nRnJhbWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAg
ICAgICAgbV9pc0NhY2hpbmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNjcsMTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KHNpemVfdCBpbmRleCkKICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAg
ICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJh
bWVBdEluZGV4KGluZGV4KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4
LCByZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJl
Y2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1h
Z2VGcmFtZURhdGEpCitib29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBj
b25zdAogeworICAgIHJldHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWlu
ZWRNb2RlSW1hZ2UtPnJldGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcElt
YWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFt
ZURhdGEmIGltYWdlRnJhbWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2Rl
ckNhbmNlbGVkKQoreworICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBp
bmRpcmVjdGx5IGluIHRoaXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVk
TW9kZVNhdmVyKG1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8v
IG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVw
bGFjZWQgd2l0aCBuZXcgZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xl
YXIgbV9mcmFtZSwgdGhlIG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFn
ZTo6ZGF0YUNoYW5nZWQgZm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0
IGJlIHJlbW92ZWQgaGVyZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1l
c1tpbmRleF0uY2xlYXIodHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90
aWZ5KGZyYW1lc0NsZWFyZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZy
YW1lRGF0YShpbWFnZUZyYW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVD
b3VudCgpOwpAQCAtMjg4LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZl
RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAg
ICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRl
cyAtPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGll
c1NpemUgPSAwOwotICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKSB7CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXpl
Q2hhbmdlZCh0aGlzLCBkZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tp
bmRleF0ubV9pc0NvbXBsZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxl
ZCkKKyAgICAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywg
SW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAt
MzA5LDcgKzM0NSwxMyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFt
ZUR1cmF0aW9uQXRJbmRleCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZTsKKyAgICAvLyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29k
ZWQgYnkgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBt
X2lzQ29tcGxldGUgaXMgdHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21w
bGV0ZSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6
Y3VycmVudEZyYW1lSXNDb21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2
NjlhMDUxMjFiNS4uOGNiYzY1NDU1MzcwOTFmYjZiYzU1YzU1ZjZlMDkzNzg3OTY3NWYzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIklt
YWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRt
YXBJbWFnZSA6IHB1YmxpYyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAg
IGZyaWVuZCBjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3Mg
R2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OwogICAgIGZyaWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0yMDEsNyArMjA0LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBJbWFnZVNvdXJjZU9ic2VydmVyCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1l
RGF0YSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwg
Y29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0gZmFsc2UsIGJvb2wgcGFyYWxs
ZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVT
aXplKCkgY29uc3Q7CkBAIC0yMzgsNiArMjQxLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCk7CiAKKyAgICBib29sIGN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKTsKKwogICAg
IC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50
ZXJuYWxseS4KICAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4KTsKICAgICAvLyBDYWxs
ZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0uIFJldHVybnMgZmFsc2Ugb24gaW5k
ZXggb3V0IG9mIGJvdW5kcy4KQEAgLTI5Myw2ICsyOTgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpOwogICAgIHZpcnR1YWwgQ29sb3Igc29s
aWRDb2xvcigpIGNvbnN0OwogICAgIAorICAgIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkg
Y29uc3Q7CisKICAgICBJbWFnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBtdXRhYmxlIEludFNpemUg
bV9zaXplOyAvLyBUaGUgc2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1
c3QgYmUgdGhlIHNpemUgb2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUg
bV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwpAQCAtMzE3LDYgKzMyNCw4IEBAIHByb3RlY3Rl
ZDoKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOyAvLyBUaGUg
c2l6ZSBvZiBkYXRhIGRlY29kZWQgYnkgdGhlIHNvdXJjZSB0byBkZXRlcm1pbmUgaW1hZ2UgcHJv
cGVydGllcyAoZS5nLiBzaXplLCBmcmFtZSBjb3VudCwgZXRjKS4KICAgICBzaXplX3QgbV9mcmFt
ZUNvdW50OwogCisgICAgUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBtX3JldGFpbmVk
TW9kZUltYWdlOworCiAgICAgYm9vbCBtX2lzU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgb3Ig
bm90IHdlIGFyZSBhIDF4MSBzb2xpZCBpbWFnZS4KICAgICBib29sIG1fY2hlY2tlZEZvclNvbGlk
Q29sb3IgOiAxOyAvLyBXaGV0aGVyIHdlJ3ZlIGNoZWNrZWQgdGhlIGZyYW1lIGZvciBzb2xpZCBj
b2xvci4KIApAQCAtMzI3LDYgKzMzNiw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fc2l6ZUF2
YWlsYWJsZSA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGNhbiBvYnRhaW4gdGhlIHNpemUgb2Yg
dGhlIGZpcnN0IGltYWdlIGZyYW1lIHlldCBmcm9tIEltYWdlSU8uCiAgICAgbXV0YWJsZSBib29s
IG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1faGF2ZUZyYW1l
Q291bnQgOiAxOworCisgICAgYm9vbCBtX2lzQ2FjaGluZ0ZyYW1lIDogMTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRl
eCAwMjAzMzRlY2ZkZDU2Y2VkYTQ2ZTdhYTllMzIxZWVmMTU5MmQ0MzkxLi4xMDk5ZGI1Y2FjYWJl
NjA0MjY3Yzk4YzNjNzU1ZDRkMWNkN2Q2Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zNSw5ICszNSwxMyBAQAogI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZU9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVj
b2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVzb2x1dGlvblRocmVzaG9sZEZvclBh
cmFsbGVsID0gNTEyICogNTEyOworCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKIHVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9
IDEwMjQgKiAxMDI0OwogI2VuZGlmCkBAIC02NiwxMSArNzAsMTUgQEAgSW1hZ2VTb3VyY2U6On5J
bWFnZVNvdXJjZSgpCiB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNp
emVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVy
KQorICAgICAgICAvLyBPbmx5IEdJRiBkZWNvZGVyIGltcGxlbWVudHMgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlLgorICAgICAgICBpZiAobV9kZWNvZGVyICYmICFtX3BhcmFsbGVsRGVjb2RlcikKICAg
ICAgICAgICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJh
bWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVy
LmdldCgpKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOworCiAgICAgZGVsZXRlIG1f
ZGVjb2RlcjsKICAgICBtX2RlY29kZXIgPSAwOwogICAgIGlmIChkYXRhKQpAQCAtODgsNiArOTYs
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0
YSBhbmQgaW5zdGFudGlhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIg
cGx1Z2luLgogICAgIC8vIElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRl
dGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8v
IG1hZGUuCisKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNT
RVJUKG1fZGVjb2Rlcik7CisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1f
ZGVjb2RlcikgewogICAgICAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZVNv
dXJjZVB0cj4oSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQpAQCAtMTAyLDExICsxMTcsMTUgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBTdHJpbmcgSW1h
Z2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxl
bERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+ZmlsZW5h
bWVFeHRlbnNpb24oKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFt
ZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2
YWlsYWJsZSgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKQEAgLTExNiw2ICsxMzUsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpz
aXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50YXRpb24p
CiAgICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVj
b2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQog
CkBAIC0xMjUsNiArMTQ2LDggQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eChzaXplX3QgaW5kZXgsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmIChzaG91
bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+c2l6ZSgpOwogICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogSW50U2l6ZSgpOwog
fQogCkBAIC0xNDAsMjMgKzE2MywxMjAgQEAgc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0
aXRpb25Db3VudCgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAg
ICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rl
ci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAogc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIu
Z2V0KCkpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29k
ZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZykK
K3sKKyAgICBBU1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgaW5kZXgpKTsKKyAgICBB
U1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgIW1fb2JzZXJ2ZXIpKTsKKworICAgIGlm
ICghbV9kZWNvZGVyKSB7CisgICAgICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoaW5kZXgsIEltYWdlRnJhbWVEYXRhKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKKyAgICB9CisKKyAgICBpZiAoIXJldGFpbmVkTW9kZVJlbmRlcmluZyB8fCAhbV9vYnNl
cnZlciB8fCBmaXJzdEZyYW1lSXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm4gc2VyaWFsRGVj
b2RlKGluZGV4KTsKKworICAgIGlmIChzaG91bGREZWNvZGVQYXJhbGxlbCgpKSB7CisgICAgICAg
IHBhcmFsbGVsRGVjb2RlKCk7CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YSgpOworICAg
IH0KKworICAgIHJldHVybiBzZXJpYWxEZWNvZGUoaW5kZXgpOworfQorCitib29sIEltYWdlU291
cmNlOjpzaG91bGREZWNvZGVQYXJhbGxlbCgpCit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisK
KyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpID09IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFN0cmluZyBmaWxlRXh0ID0gZmlsZW5hbWVFeHRlbnNpb24oKTsK
KyAgICBpZiAoZmlsZUV4dCA9PSAiaWNvIiB8fCBmaWxlRXh0ID09ICJnaWYiKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoc2l6ZSgpLmFyZWEoKSA8IHNfcmVzb2x1dGlvblRocmVzaG9s
ZEZvclBhcmFsbGVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZUlzQ29tcGxldGUoKQoreworICAgIEFT
U0VSVChtX2RlY29kZXIpOworICAgIEltYWdlRnJhbWUqIGltYWdlRnJhbWUgPSAwOworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIGltYWdlRnJhbWUgPSBtX2RlY29kZXItPmZp
cnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZSAmJiBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KGltYWdlRnJhbWUpOworfQorCit2b2lkIEltYWdlU291cmNl
OjpwYXJhbGxlbERlY29kZSgpCit7CisgICAgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQo
KTsKKyAgICBtX3BhcmFsbGVsRGVjb2Rlci0+ZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OmRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCit7Cisg
ICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0
SW5kZXgoMCwgaW1hZ2VGcmFtZURhdGEsIHRydWUpOworCisgICAgaWYgKGltYWdlRnJhbWVEYXRh
Lm1faXNDb21wbGV0ZSkKKyAgICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKQoreworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyID0gYWRvcHRS
ZWYobmV3IFBhcmFsbGVsSW1hZ2VEZWNvZGVyKHRoaXMsIG1fZGVjb2RlcikpOworfQorCit2b2lk
IEltYWdlU291cmNlOjpjbGVhclBhcmFsbGVsRGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fb2Jz
ZXJ2ZXIpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9wYXJh
bGxlbERlY29kZXIuY2xlYXIoKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnNl
cmlhbERlY29kZShzaXplX3QgaW5kZXgpCit7CisgICAgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5j
ZWxlZCA9IGZhbHNlOworICAgIC8vIFJlbmRlckltYWdlIGFuZCBDYW52YXNFbGVtZW50IGNhbiBz
aGFyZSB0aGUgc2FtZSBDYWNoZWRJbWFnZS4KKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgICAgICBjbGVhclBhcmFsbGVs
RGVjb2RlcigpOworICAgICAgICBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IHRydWU7CisgICAg
fQorCiAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgs
IGltYWdlRnJhbWVEYXRhKTsKKworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2Vy
dmVyLT5kaWRSZWNlaXZlRnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSwgZmFsc2Ug
LyogcmV0YWluZWRNb2RlICovLCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCk7CisKKyAgICByZXR1
cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogeworICAgIEFTU0VSVCghbV9wYXJhbGxlbERl
Y29kZXIpOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKaW5kZXggN2I5YzAyMDU2NTFjMmE5ZTE4NTYzNzU0NWVkNDM4M2JiZGIwNWUwYy4uZjA0ZDcz
NDcyNTkzZTgwODA1YjBiYjlmZjc0MmMwYTA3M2I5NjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yOSw2ICsyOSw5IEBACiAjZGVm
aW5lIEltYWdlU291cmNlX2gKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpZiAh
VVNFKENHKQorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIKKyNlbmRp
ZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KQEAgLTY1LDYgKzY4LDkgQEAgY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIGNsYXNzIEltYWdl
U291cmNlT2JzZXJ2ZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CisjaWYgIVVT
RShDRykKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOworI2VuZGlmCiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKICNpZiBVU0UoQ0cpCkBAIC0xNDMsNyArMTQ5LDExIEBAIGNvbnN0IGludCBjQW5p
bWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAt
MTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi1jbGFzcyBJbWFnZVNvdXJjZSB7
CitjbGFzcyBJbWFnZVNvdXJjZQorI2lmICFVU0UoQ0cpCisgICAgOiBwdWJsaWMgUGFyYWxsZWxJ
bWFnZURlY29kZXJPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VTb3VyY2UpOwogcHVibGljOgogICAgIGVudW0gQWxwaGFPcHRpb24gewpAQCAtMjEwLDE3
ICsyMjAsMjQgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKIAot
ICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigp
IHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gTk9URTogQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICB2b2lkIHJlcXVlc3RGcmFtZUF0
SW5kZXgoc2l6ZV90KTsKLSAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90KTsKKyAgICAvLyBOT1RFOiBJZiBJbWFnZVNvdXJjZSBoYXMgSW1hZ2VTb3VyY2VPYnNlcnZl
ciwgdGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlc3VsdCB2aWEgZGlkRGVjb2RlKCkuCisgICAgLy8g
T3RoZXJ3aXNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSByZXN1bHQuIGUuZy4gR3JhcGhpY3ND
b250ZXh0M0QKKyAgICBJbWFnZUZyYW1lRGF0YSByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCwg
Ym9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQogICAg
IHN0YXRpYyB2b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhl
bHMpIHsgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KICNlbmRpZgog
CisjaWYgIVVTRShDRykKKyAgICAvLyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpOworI2VuZGlmCisK
IHByaXZhdGU6CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7
CiAjaWYgVVNFKENHKQogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCkBAIC0yMzMsOCArMjUwLDIwIEBAIHBy
aXZhdGU6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFt
ZSopIGNvbnN0OwogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIHZvaWQgY3JlYXRlUGFyYWxs
ZWxEZWNvZGVySWZOZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7Cisg
ICAgYm9vbCBzaG91bGREZWNvZGVQYXJhbGxlbCgpOworICAgIGJvb2wgZmlyc3RGcmFtZUlzQ29t
cGxldGUoKTsKKyAgICB2b2lkIHBhcmFsbGVsRGVjb2RlKCk7CisgICAgSW1hZ2VGcmFtZURhdGEg
c2VyaWFsRGVjb2RlKHNpemVfdCk7CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBt
X2RlY29kZXI7CiAgICAgSW1hZ2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKKwogICAgIEFs
cGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
bV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCmluZGV4IDcyYWY3MDhjN2VjZDExZjgxNmU4YThlMDI3
MjkwMjYwNjA4MjE0MjguLmQzMjA3ODJkOGU4MzBjMDRlOTlmMDFlMTQzZmQyOWE5NGE4MzIwZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZU9ic2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSW1hZ2VGcmFtZURhdGE7CiAv
LyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIEltYWdlU291
cmNlLCBpbmNsdWRpbmcgZGVjb2RpbmcuCiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNv
bnN0IEltYWdlRnJhbWVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJh
bWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0g
ZmFsc2UsIGJvb2wgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSkgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW1hZ2VTb3VyY2VPYnNlcnZlcigpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxNzJmNDgzNGU0MTY1YzE1MjEyMzViYTI4NmRhMWQ3ZDQzNWI3
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwzMDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rlci5oIgor
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFBhcmFsbGVsRnJhbWVEYXRhOwordm9pZCBkaWREZWNvZGVUYXNrQ2FsbGJhY2so
UGFyYWxsZWxGcmFtZURhdGEqKTsKK3N0YXRpYyBJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFnZUZy
YW1lRGF0YShQYXJhbGxlbEZyYW1lRGF0YSopOworCitQYXJhbGxlbEltYWdlRGVjb2Rlcjo6UGFy
YWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciogb2JzZXJ2ZXIs
IEltYWdlRGVjb2RlciogZGVjb2RlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAg
LCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQorICAgICwgbV9ieXRlc09mRGF0YUNvbnN1bWVk
KDApCisgICAgLCBtX2ltYWdlRGVjb2RlcigwKQoreworICAgIGluaXRpYWxpemUoZGVjb2Rlcik7
Cit9CisKK1BhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29kZXIoKQorewor
ICAgIEFTU0VSVCghdmFsaWQoKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6Omlu
aXRpYWxpemUoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGRlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpICYmICFkZWNvZGVy
LT5zaXplKCkuaXNFbXB0eSgpKTsKKworICAgIG1fc2l6ZSA9IGRlY29kZXItPnNpemUoKTsKKyAg
ICBtX2ZpbGVuYW1lRXh0ZW5zaW9uID0gZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKKwor
ICAgIHNldERhdGEoZGVjb2Rlci0+ZGF0YSgpLCBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgp
KTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZyYW1lLnNl
dFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX2ltYWdlRGVj
b2RlciA9IGRlY29kZXI7CisgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOwor
ICAgIC8vIEFmdGVyIHRoaXMgbGluZSwgaXQgaXMgaWxsZWdhbCBmb3IgdGhlIG1haW4gdGhyZWFk
IHRvIGFjY2VzcyBtX2ltYWdlRGVjb2Rlci4KKworICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgbGFz
dCBsaW5lIGJlY2F1c2UgSW1hZ2VEZWNvZGVXb3JrZXIgZ3VhcmFudGVlcworICAgIC8vIHRoZSB2
aXNpYmlsaXR5IG9mIG1lbWJlcnMgaW4gdGhlIHRhc2sgdGhyZWFkLgorICAgIG1fZGVjb2RlV29y
a2VyID0gSW1hZ2VEZWNvZGVXb3JrZXI6OmFjcXVpcmVTaGFyZWRXb3JrZXIoKTsKK30KKwordm9p
ZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgbV9kZWNvZGVX
b3JrZXIuY2xlYXIoKTsKKyAgICAvLyBUaGUgbWFpbiB0aHJlYWQgY2FuIHVzZSBtX2ltYWdlRGVj
b2RlciBiZWNhdXNlIG90aGVyIHRocmVhZHMgZG8gbm90IGFjY2VzcyBtX2ltYWdlRGVjb2RlciBh
ZnRlciB0aGlzIGxpbmUuCisKKyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YShtX2RhdGEuZ2V0
KCksIG1faXNBbGxEYXRhUmVjZWl2ZWQpOworCisgICAgbV9zaXplID0gSW50U2l6ZSgpOworICAg
IG1fZmlsZW5hbWVFeHRlbnNpb24gPSAiIjsKKworICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBm
YWxzZTsKKyAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAw
OworCisgICAgbV9pbWFnZUZyYW1lID0gSW1hZ2VGcmFtZSgpOworCisgICAgaWYgKG1fZGF0YUZv
clRhc2suZ2V0KCkpCisgICAgICAgIG1fZGF0YUZvclRhc2suY2xlYXIoKTsKKworICAgIG1faW1h
Z2VEZWNvZGVyID0gMDsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZl
ZDsKKyAgICBtX2RhdGEgPSBkYXRhOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1faW1h
Z2VEZWNvZGVyKTsKKyAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkpOworCisgICAgT3duUHRy
PEVuY29kZWREYXRhU2VnbWVudD4gc2VnbWVudCA9IGV4dHJhY3RTZWdtZW50Rm9yVGFzaygpOwor
ICAgIGlmICghc2VnbWVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGVjb2RlV29y
a2VyLT5wb3N0VGFzayhiaW5kKCZQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGVjb2RlVGFzaywgdGhp
cywgc2VnbWVudC5yZWxlYXNlKCkpKTsKK30KKworUGFzc093blB0cjxQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6RW5jb2RlZERhdGFTZWdtZW50PiBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNl
Z21lbnRGb3JUYXNrKCkKK3sKKyAgICBBU1NFUlQobV9ieXRlc09mRGF0YUNvbnN1bWVkID49IDAg
JiYgbV9ieXRlc09mRGF0YUNvbnN1bWVkIDw9IG1fZGF0YS0+c2l6ZSgpKTsKKworICAgIGludCBz
aXplT2ZTZWdtZW50ID0gbV9kYXRhLT5zaXplKCkgLSBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7Cisg
ICAgaWYgKCFzaXplT2ZTZWdtZW50KQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxFbmNvZGVk
RGF0YVNlZ21lbnQ+KCk7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50
KGFkb3B0UHRyKG5ldyBFbmNvZGVkRGF0YVNlZ21lbnQoKSkpOworICAgIGNvbnN0IGNoYXIqIHNy
Y1B0ciA9IG1fZGF0YS0+ZGF0YSgpICsgbV9ieXRlc09mRGF0YUNvbnN1bWVkOworICAgIHNlZ21l
bnQtPm1fc2VnbWVudC5hcHBlbmQoc3JjUHRyLCBzaXplT2ZTZWdtZW50KTsKKyAgICBtX2J5dGVz
T2ZEYXRhQ29uc3VtZWQgPSBtX2RhdGEtPnNpemUoKTsKKworICAgIHNlZ21lbnQtPm1faXNBbGxE
YXRhUmVjZWl2ZWQgPSBtX2lzQWxsRGF0YVJlY2VpdmVkOworCisgICAgcmV0dXJuIHNlZ21lbnQu
cmVsZWFzZSgpOworfQorCitzdHJ1Y3QgUGFyYWxsZWxGcmFtZURhdGEgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQYXJhbGxlbEZyYW1lRGF0YShQYXNzUmVmUHRy
PFBhcmFsbGVsSW1hZ2VEZWNvZGVyPiBwYXJhbGxlbERlY29kZXIpCisgICAgICAgIDogbV9wYXJh
bGxlbERlY29kZXIocGFyYWxsZWxEZWNvZGVyKQorICAgICAgICAsIG1fZGVjb2RlZFNlZ21lbnQo
KQorICAgICAgICAsIG1fc3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCisgICAgICAgICwg
bV9oYXNBbHBoYShmYWxzZSkKKyAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKKyAg
ICB7CisgICAgfQorCisgICAgflBhcmFsbGVsRnJhbWVEYXRhKCkKKyAgICB7CisgICAgfQorCisg
ICAgUmVmUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyPiBtX3BhcmFsbGVsRGVjb2RlcjsKKyAgICBP
d25BcnJheVB0cjxJbWFnZUZyYW1lOjpQaXhlbERhdGE+IG1fZGVjb2RlZFNlZ21lbnQ7CisgICAg
SW1hZ2VGcmFtZTo6RnJhbWVTdGF0dXMgbV9zdGF0dXM7CisgICAgYm9vbCBtX2hhc0FscGhhOwor
ICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOworICAgIEludFJlY3QgbV9kZWNvZGVkUmVjdDsK
K307CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZVRhc2soUGFzc093blB0cjxQ
YXJhbGxlbEltYWdlRGVjb2Rlcjo6RW5jb2RlZERhdGFTZWdtZW50PiBwYXNzU2VnbWVudCkKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIp
OworCisgICAgT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gc2VnbWVudCA9IHBhc3NTZWdtZW50
OworCisgICAgLy8gMS4gU2VuZCBzZWdtZW50IGRhdGEgdG8gSW1hZ2VEZWNvZGVyLgorICAgIGlm
ICghbV9kYXRhRm9yVGFzaykgeworICAgICAgICBtX2RhdGFGb3JUYXNrID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFRocmVhZFJlc3RyaWN0aW9u
VmVyaWZpZXIgZG9lcyBub3QgYWxsb3cgdHdvIHRocmVhZHMgdG8gYWNjZXNzIG9uZSBSZWZDb3Vu
dGVkIG9iamVjdC4KKyAgICAgICAgLy8gbV9kYXRhRm9yVGFzayBpcyB1c2VkIGJ5IGJvdGggdGhl
IG1haW4gdGhyZWFkIGFuZCB0aGUgdGFzayB0aHJlYWQ6CisgICAgICAgIC8vIFRoZSB0YXNrIHRo
cmVhZCBjcmVhdGVzLCB1c2VzIGFuZCByZW1vdmVzIG1fZGF0YUZvclRhc2suIFRoZSBtYWluIHRo
cmVhZCBtYXkgcmVtb3ZlCisgICAgICAgIC8vIG1fZGF0YUZvclRhc2sgaWYgdGhlIHRhc2sgdGhy
ZWFkIGNvdWxkIG5vdCByZW1vdmUgbV9kYXRhRm9yVGFzay4KKyAgICAgICAgLy8KKyAgICAgICAg
Ly8gUGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMgbWFuYWdlIG1fZGF0YUZvclRhc2sgaW4gYSB0aHJl
YWQtc2FmZSB3YXkuIEhvd2V2ZXIsCisgICAgICAgIC8vIHdlIGNhbid0IHRlbGwgdGhlIHZlcmlm
aWVyIHRoYXQgd2UgYXJlIHNhZmUgYnkgc2ltcGx5IHBhc3NpbmcgYSBtdXRleAorICAgICAgICAv
LyBiZWNhdXNlIGxpYmRpc3BhdGNoIGRvZXMgbm90IGV2ZW4gZ3VhcmFudGVlIGRlY29kZVRhc2sg
aXMgY2FsbGVkIGJ5IHRoZSBzYW1lIHRocmVhZAorICAgICAgICAvLyBlYWNoIHRpbWUuIFNvIHR1
cm4gb2ZmIHRoZSB2ZXJpZmllciBoZXJlLgorICAgICAgICBtX2RhdGFGb3JUYXNrLT50dXJuT2Zm
VmVyaWZpZXIoKTsKKyNlbmRpZgorICAgIH0KKyAgICBtX2RhdGFGb3JUYXNrLT5hcHBlbmQoc2Vn
bWVudC0+bV9zZWdtZW50KTsKKyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YShtX2RhdGFGb3JU
YXNrLmdldCgpLCBzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKworICAgIEltYWdlRnJh
bWUqIG9sZEJ1ZmZlciA9IG1faW1hZ2VEZWNvZGVyLT5maXJzdEltYWdlRnJhbWVXaXRob3V0RGVj
b2RlKCk7CisgICAgaW50IGxhc3REZWNvZGVkUm93ID0gb2xkQnVmZmVyID8gb2xkQnVmZmVyLT5s
YXN0RGVjb2RlZFJvdygpIDogMDsKKworICAgIC8vIDIuIERlY29kZSBhbiBpbWFnZSBpbmNyZW1l
bnRhbGx5LgorICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1faW1hZ2VEZWNvZGVyLT5mcmFtZUJ1
ZmZlckF0SW5kZXgoMCk7CisgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7CisgICAgICAgIEFTU0VSVCghc2VnbWVudC0+bV9pc0Fs
bERhdGFSZWNlaXZlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAzLiBNYWtl
IGEgUGFyYWxsZWxGcmFtZURhdGEgaW4gb3JkZXIgdG8gcGFzcyBpdCB0byB0aGUgbWFpbiB0aHJl
YWQuCisgICAgUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhID0gbmV3IFBhcmFs
bGVsRnJhbWVEYXRhKHRoaXMpOworICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyA9IGJ1
ZmZlci0+c3RhdHVzKCk7CisgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1faGFzQWxwaGEgPSBidWZm
ZXItPmhhc0FscGhhKCk7CisgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fcHJlbXVsdGlwbHlBbHBo
YSA9IGJ1ZmZlci0+cHJlbXVsdGlwbHlBbHBoYSgpOworCisgICAgaW50IG5ld0xhc3REZWNvZGVk
Um93ID0gYnVmZmVyLT5sYXN0RGVjb2RlZFJvdygpOworICAgIC8vIE9ubHkgaW4gQk1QLCBsYXN0
RGVjb2RlZFJvdyBjYW4gYmUgYmlnZ2VyIHRoYW4gbmV3TGFzdERlY29kZWRSb3cuCisgICAgaW50
IGxhc3REZWNvZGVkTWluUm93ID0gc3RkOjptaW4obGFzdERlY29kZWRSb3csIG5ld0xhc3REZWNv
ZGVkUm93KTsKKyAgICBpbnQgbGFzdERlY29kZWRNYXhSb3cgPSBzdGQ6Om1heChsYXN0RGVjb2Rl
ZFJvdywgbmV3TGFzdERlY29kZWRSb3cpOworICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29k
ZWRSZWN0ID0gSW50UmVjdCgwLCBsYXN0RGVjb2RlZE1pblJvdywgbV9pbWFnZURlY29kZXItPnNp
emUoKS53aWR0aCgpLCBsYXN0RGVjb2RlZE1heFJvdyAtIGxhc3REZWNvZGVkTWluUm93ICsgMSk7
CisKKyAgICAvLyA0LiBDcmVhdGUgZGVjb2RlZCBzZWdtZW50IGRhdGEgaW4gb3JkZXIgdG8gcGFz
cyBpdCB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgLy8gICAgSWYgdGhlIHN0YXR1cyBpcyBGcmFt
ZUNvbXBsZXRlLCB0aGlzIGlzIG5vdCBuZWVkZWQgYmVjYXVzZSBhIE5hdGl2ZUltYWdlIHdpbGwg
YmUgY3JlYXRlZCB1c2luZyB0aGUgZGVjb2RlciBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgaWYg
KHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyA9PSBJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwp
IHsKKyAgICAgICAgaW50IHNlZ21lbnRTaXplID0gcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2Rl
ZFJlY3Quc2l6ZSgpLmFyZWEoKTsKKyAgICAgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2Rl
ZFNlZ21lbnQgPSBhZG9wdEFycmF5UHRyKG5ldyBJbWFnZUZyYW1lOjpQaXhlbERhdGFbc2VnbWVu
dFNpemVdKTsKKworICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIHNlZ21lbnRBZGRyID0g
cGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFNlZ21lbnQuZ2V0KCk7CisgICAgICAgIG1lbWNw
eShzZWdtZW50QWRkciwgYnVmZmVyLT5nZXRBZGRyKDAsIGxhc3REZWNvZGVkTWluUm93KSwgc2Vn
bWVudFNpemUgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSk7CisgICAgfSBlbHNlIHsg
Ly8gRnJhbWVDb21wbGV0ZQorICAgICAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YSgwLCBmYWxz
ZSk7CisgICAgICAgIG1fZGF0YUZvclRhc2suY2xlYXIoKTsKKyAgICB9CisKKyAgICBjYWxsT25N
YWluVGhyZWFkKGJpbmQoZGlkRGVjb2RlVGFza0NhbGxiYWNrLCBwYXJhbGxlbEZyYW1lRGF0YSkp
OworfQorCit2b2lkIGRpZERlY29kZVRhc2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSogcGFy
YWxsZWxGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBJ
ZiBhIGNsaWVudCBjYWxsZWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmNsZWFyKCksIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyIGlzIGludmFsaWRhdGVkLgorICAgIGlmIChwYXJhbGxlbEZyYW1lRGF0YS0+
bV9wYXJhbGxlbERlY29kZXItPnZhbGlkKCkpCisgICAgICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5t
X3BhcmFsbGVsRGVjb2Rlci0+ZGlkRGVjb2RlVGFzayhwYXJhbGxlbEZyYW1lRGF0YSk7CisgICAg
ZGVsZXRlIHBhcmFsbGVsRnJhbWVEYXRhOworfQorCitJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFn
ZUZyYW1lRGF0YShQYXJhbGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAg
SW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGE7CisgICAgaW1hZ2VGcmFtZURhdGEubV9vcmll
bnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworICAgIGltYWdlRnJhbWVEYXRhLm1f
aXNDb21wbGV0ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlOworICAgIGltYWdlRnJhbWVEYXRhLm1faGFzQWxwaGEgPSAhaW1hZ2VGcmFt
ZURhdGEubV9pc0NvbXBsZXRlIHx8IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhhOworICAg
IHJldHVybiBpbWFnZUZyYW1lRGF0YTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6
ZGlkRGVjb2RlVGFzayhQYXJhbGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQocGFyYWxsZWxGcmFtZURhdGEt
Pm1fc3RhdHVzICE9IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpOworCisgICAgSW1hZ2VGcmFtZURh
dGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVJbWFnZUZyYW1lRGF0YShwYXJhbGxlbEZyYW1lRGF0
YSk7CisKKyAgICBpZiAoIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKKyAgICAgICAgZGlk
RGVjb2RlUGFydGlhbChpbWFnZUZyYW1lRGF0YSwgcGFyYWxsZWxGcmFtZURhdGEpOworICAgIGVs
c2UKKyAgICAgICAgZGlkRGVjb2RlQ29tcGxldGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit2b2lk
IFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkaWREZWNvZGVQYXJ0aWFsKEltYWdlRnJhbWVEYXRhJiBp
bWFnZUZyYW1lRGF0YSwgUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhcHBlbmREZWNvZGVkRGF0YVRvSW1h
Z2VGcmFtZShwYXJhbGxlbEZyYW1lRGF0YSk7CisgICAgc3luY0ltYWdlRnJhbWUocGFyYWxsZWxG
cmFtZURhdGEpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9IG1faW1hZ2VGcmFtZS5h
c05ld05hdGl2ZUltYWdlKCk7CisgICAgbV9vYnNlcnZlci0+ZGlkRGVjb2RlKGltYWdlRnJhbWVE
YXRhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAg
IGNvbnN0IEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY29uc3Qgc2VnbWVudEFkZHIgPSBwYXJhbGxl
bEZyYW1lRGF0YS0+bV9kZWNvZGVkU2VnbWVudC5nZXQoKTsKKyAgICBpbnQgc2VnbWVudFNpemUg
PSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAgIElt
YWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdEFkZHIgPSBtX2ltYWdlRnJhbWUuZ2V0QWRkcigwLCBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdC55KCkpOworICAgIG1lbWNweShkZXN0QWRk
ciwgc2VnbWVudEFkZHIsIHNlZ21lbnRTaXplICogc2l6ZW9mKEltYWdlRnJhbWU6OlBpeGVsRGF0
YSkpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpzeW5jSW1hZ2VGcmFtZShQYXJh
bGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgLy8gVGhlIGZvbGxvd2lu
ZyBsaW5lcyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSBhIHZhbGlkIG5hdGl2ZSBpbWFnZSBpbiBJbWFn
ZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkuCisgICAgbV9pbWFnZUZyYW1lLnNldFN0YXR1cyhw
YXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMpOworICAgIG1faW1hZ2VGcmFtZS5zZXRIYXNBbHBo
YShwYXJhbGxlbEZyYW1lRGF0YS0+bV9oYXNBbHBoYSk7CisgICAgbV9pbWFnZUZyYW1lLnNldFBy
ZW11bHRpcGx5QWxwaGEocGFyYWxsZWxGcmFtZURhdGEtPm1fcHJlbXVsdGlwbHlBbHBoYSk7Cit9
CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29kZUNvbXBsZXRlKEltYWdlRnJh
bWVEYXRhJiBpbWFnZUZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICAvLyBUaGUgbWFpbiB0aHJlYWQgY2Fu
IHVzZSBtX2ltYWdlRGVjb2RlciBiZWNhdXNlIG90aGVyIHRocmVhZHMgZG8gbm90IGFjY2VzcyBt
X2ltYWdlRGVjb2RlciBhZnRlciB0aGlzIGxpbmUuCisKKyAgICBJbWFnZUZyYW1lKiBidWZmZXIg
PSBtX2ltYWdlRGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIEFT
U0VSVChidWZmZXIpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9IGJ1ZmZlci0+YXNO
ZXdOYXRpdmVJbWFnZSgpOworICAgIG1fb2JzZXJ2ZXItPmRpZERlY29kZShpbWFnZUZyYW1lRGF0
YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZjBhMzhhYjc4MzBiZTQ3ZmJm
MDE5Zjc3MDJmZDAzMmQ1NzhmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsMTA0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhcmFsbGVsSW1hZ2VEZWNvZGVyX2gKKyNkZWZpbmUg
UGFyYWxsZWxJbWFnZURlY29kZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVXb3JrZXIuaCIK
KyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rl
ck9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworY2xhc3MgUGFyYWxsZWxGcmFtZURh
dGE7CisKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFBhcmFsbGVsSW1hZ2VEZWNvZGVyPiB7CitwdWJsaWM6CisgICAgUGFyYWxsZWxJbWFn
ZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciosIEltYWdlRGVjb2RlciopOwor
ICAgIH5QYXJhbGxlbEltYWdlRGVjb2RlcigpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisK
KyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
CisgICAgdm9pZCBkZWNvZGUoKTsKKworICAgIGlubGluZSBTdHJpbmcgZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOyB9CisgICAgaW5saW5lIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCitwcml2YXRlOgorICAgIHZv
aWQgaW5pdGlhbGl6ZShJbWFnZURlY29kZXIqKTsKKworICAgIGlubGluZSBib29sIHZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZURlY29kZXI7IH0KKworICAgIHN0cnVjdCBFbmNvZGVkRGF0
YVNlZ21lbnQgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbmNvZGVkRGF0YVNlZ21l
bnQpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAg
ICAgIEVuY29kZWREYXRhU2VnbWVudCgpIHsgfQorICAgICAgICBWZWN0b3I8Y2hhcj4gbV9zZWdt
ZW50OworICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisgICAgfTsKKworICAgIFBh
c3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBleHRyYWN0U2VnbWVudEZvclRhc2soKTsKKwor
ICAgIC8vIE9ubHkgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSB0YXNrIHRocmVhZC4KKyAg
ICB2b2lkIGRlY29kZVRhc2soUGFzc093blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+KTsKKworICAg
IHZvaWQgZGlkRGVjb2RlVGFzayhQYXJhbGxlbEZyYW1lRGF0YSopOworICAgIHZvaWQgZGlkRGVj
b2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYsIFBhcmFsbGVsRnJhbWVEYXRhKik7CisgICAgdm9p
ZCBhcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSopOworICAg
IHZvaWQgc3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2b2lkIGRpZERl
Y29kZUNvbXBsZXRlKEltYWdlRnJhbWVEYXRhJik7CisgICAgZnJpZW5kIHZvaWQgZGlkRGVjb2Rl
VGFza0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKKyAgICBQYXJhbGxlbEltYWdlRGVj
b2Rlck9ic2VydmVyKiBtX29ic2VydmVyOworCisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgU3Ry
aW5nIG1fZmlsZW5hbWVFeHRlbnNpb247CisKKyAgICAvLyBGb3IgaW5wdXQgZGF0YQorICAgIGJv
b2wgbV9pc0FsbERhdGFSZWNlaXZlZDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgaW50IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKworICAgIC8vIEZvciBvdXRwdXQgZGF0
YQorICAgIEltYWdlRnJhbWUgbV9pbWFnZUZyYW1lOworCisgICAgLy8gVGhlIHRhc2sgdGhyZWFk
IGNhbiBhY2Nlc3Mgb25seSBtX2RhdGFGb3JUYXNrIGFuZCBtX2ltYWdlRGVjb2Rlci4KKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFGb3JUYXNrOworCisgICAgSW1hZ2VEZWNvZGVyKiBt
X2ltYWdlRGVjb2RlcjsKKworICAgIFJlZlB0cjxJbWFnZURlY29kZVdvcmtlcj4gbV9kZWNvZGVX
b3JrZXI7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rl
ck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlck9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3ZTE5NzA1ZTFlMjljNWYzOWFkYmRj
YmU5Nzc3OGExODFkOGU2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
X2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcl9oCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CisKKy8vIEludGVyZmFjZSBmb3Igbm90
aWZpY2F0aW9uIGFib3V0IGRlY29kaW5nIGNvbXBsZXRpb24gb2YgYW4gUGFyYWxsZWxJbWFnZURl
Y29kZXIuCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJikgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcigpIHsg
fQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
OWJhYjY2NTU3ZTFmNzE0Mjg3MTBkMzVlODU4ZjU5M2JlOGRkZGJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBh
bnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisKKyNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U+IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjcmVhdGUoQml0bWFw
SW1hZ2UqIGJpdG1hcEltYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpKTsKK30KKworUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKEJpdG1hcEltYWdlKiBiaXRtYXBJbWFnZSkKKyAg
ICA6IG1fYml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpCisgICAgLCBtX3JldGFpbmVkTW9kZUNvdW50
KDApCit7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVT
YXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+aGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW4oKTsKK30KKworSW50U2l6ZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSgpIGNv
bnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7Cisg
ICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNpemUoKTsKK30KKworYm9vbCBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPmdldEhvdFNwb3QocG9pbnQpOworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBSZXRhaW5l
ZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJ
bWFnZS0+ZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKK30KKworU3RyaW5nIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Cit7CisgICAgUmV0YWlu
ZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFw
SW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCit7CisgICAgUmV0YWlu
ZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+
ZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOworfQorCit1bnNpZ25lZCBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZTo6ZGVjb2RlZFNpemUoKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNh
dmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5k
ZWNvZGVkU2l6ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5zdGFydEFuaW1h
dGlvbihjYXRjaFVwSWZOZWNlc3NhcnkpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlOjpzdG9wQW5pbWF0aW9uKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1v
ZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5zdG9wQW5pbWF0aW9uKCk7Cit9CisK
K3ZvaWQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKK3sKKyAgICBS
ZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcElt
YWdlLT5yZXNldEFuaW1hdGlvbigpOworfQorCitOYXRpdmVJbWFnZVB0ciBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIFJldGFpbmVk
TW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcElt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworfQorCitib29sIFJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCit7CisgICAgUmV0YWluZWRNb2Rl
U2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2Ut
PmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6OmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJl
dGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5jdXJyZW50
RnJhbWVJc0NvbXBsZXRlKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNh
dmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1hZ2UtPmRyYXcoY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIg
cmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPm1heUZp
bGxXaXRoU29saWRDb2xvcigpOworfQorCitDb2xvciBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2Rl
U2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNvbGlkQ29sb3IoKTsKK30K
KworUmV0YWluZWRNb2RlU2F2ZXI6OlJldGFpbmVkTW9kZVNhdmVyKGNvbnN0IFJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKiBpbWFnZSwgYm9vbCByZXRhaW5lZCkKKyAgICA6IG1faW1hZ2UoaW1hZ2Up
CisgICAgLCBtX3JldGFpbmVkKHJldGFpbmVkKQoreworICAgIGlmIChtX3JldGFpbmVkKQorICAg
ICAgICBtX2ltYWdlLT5iZWdpblJldGFpbmVkTW9kZSgpOworfQorCitSZXRhaW5lZE1vZGVTYXZl
cjo6flJldGFpbmVkTW9kZVNhdmVyKCkKK3sKKyAgICBpZiAobV9yZXRhaW5lZCkKKyAgICAgICAg
bV9pbWFnZS0+ZW5kUmV0YWluZWRNb2RlKCk7Cit9CisKK1JldGFpbmVkTW9kZUJpdG1hcEltYWdl
KiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKEltYWdlKiBpbWFnZSkKK3sKKyAgICBBU1NFUlQo
aW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSk7CisKKyAgICBCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2Ug
PSBzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKTsKKyAgICBpZiAoIWJpdG1hcEltYWdl
LT5tX3JldGFpbmVkTW9kZUltYWdlLmdldCgpKQorICAgICAgICBiaXRtYXBJbWFnZS0+bV9yZXRh
aW5lZE1vZGVJbWFnZSA9IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjcmVhdGUoYml0bWFwSW1h
Z2UpOworCisgICAgcmV0dXJuIGJpdG1hcEltYWdlLT5tX3JldGFpbmVkTW9kZUltYWdlLmdldCgp
OworfQorCitJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUoSW1hZ2Uq
IGltYWdlKQoreworICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQorICAg
ICAgICByZXR1cm4gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSk7CisgICAgcmV0dXJu
IGltYWdlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2U3YThjMzg1
NTczMGNlOWM5OWFlMTlmMTM4MDlkYWZjZjg1N2U1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2VfaAorI2RlZmluZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZV9oCisKKyNpbmNsdWRlICJJ
bWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1hcEltYWdlOworY2xh
c3MgUmV0YWluZWRNb2RlU2F2ZXI7CisKK2NsYXNzIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlIDog
cHVibGljIEltYWdlIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0YWluZWRNb2RlU2F2ZXI7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IGNyZWF0
ZShCaXRtYXBJbWFnZSopOworCisgICAgdmlydHVhbCB+UmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uo
KSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
OworCisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4
dGVuc2lvbigpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShi
b29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGRlY29kZWRTaXpl
KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oYm9vbCBjYXRjaFVw
SWZOZWNlc3NhcnkgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1hdGlvbigpOwor
ICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHZpcnR1YWwgYm9vbCBj
dXJyZW50RnJhbWVIYXNBbHBoYSgpOworCisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBsZXRl
KCk7CisKKyAgICBpbmxpbmUgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3JldGFpbmVkTW9kZUNvdW50OyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yKTsKKworICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsK
KyAgICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSopOworCisgICAgaW5s
aW5lIHZvaWQgYmVnaW5SZXRhaW5lZE1vZGUoKSBjb25zdCB7IG1fcmV0YWluZWRNb2RlQ291bnQr
KzsgfQorICAgIGlubGluZSB2b2lkIGVuZFJldGFpbmVkTW9kZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBtX3JldGFpbmVkTW9kZUNvdW50LS07CisgICAgICAgIEFTU0VSVChtX3JldGFpbmVkTW9k
ZUNvdW50ID49IDApOworICAgIH0KKworICAgIEJpdG1hcEltYWdlKiBtX2JpdG1hcEltYWdlOwor
ICAgIG11dGFibGUgaW50IG1fcmV0YWluZWRNb2RlQ291bnQ7Cit9OworCitjbGFzcyBSZXRhaW5l
ZE1vZGVTYXZlciB7CitwdWJsaWM6CisgICAgUmV0YWluZWRNb2RlU2F2ZXIoY29uc3QgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UqLCBib29sIHJldGFpbmVkID0gdHJ1ZSk7CisgICAgflJldGFpbmVk
TW9kZVNhdmVyKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UqIG1faW1hZ2U7CisgICAgYm9vbCBtX3JldGFpbmVkOworfTsKKworCitSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSopOworSW1hZ2UqIHRv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKEltYWdlKik7CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRt
YXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IGIxMjE3YmJjY2ZlZGZjYWIzMWRiMjMzZmMyMTI2
YmQ3NDdkZDgzNGYuLmIzYmEwMGIwZWUxZjM4ZmM3NDlkMTYzNzQ1YzEzZmJjZGE5MTc0ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC01OCw2ICs1OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZShOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1
ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUo
ZmFsc2UpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnN1
cmZhY2UoKTsKICAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChz
dXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggMjU0MmNmOGZh
OTFkMGI4YTcxNDM4NWE0ZTMwMjM5Njc4M2Q5NjFkZC4uYjc0MjVhOWU4MTZmYjNiZWVkYjMyZTAw
N2Q3ZDJiOGQzMTUxMmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAg
LTE2NSw3ICsxNjUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1h
Z2UqIGltYWdlLCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZAogICAgICAgICBkZWNvZGVy
LnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFt
ZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEltYWdlRnJhbWVE
YXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsK
KyAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVx
dWVzdEZyYW1lQXRJbmRleCgwKTsKICAgICAgICAgaWYgKCFpbWFnZUltYWdlRnJhbWVEYXRhLm1f
aXNDb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgT3duUHRyPE5h
dGl2ZUltYWdlQ2Fpcm8+IG5hdGl2ZUltYWdlID0gYWRvcHRQdHIoaW1hZ2VJbWFnZUZyYW1lRGF0
YS5tX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggNzgwYmE0NGQ4NDFhNjAwOTkz
OTg4ZGEyMzE0NjMwODI5ZDQzMzkzZC4uMzg3ZjFlZjUyZWRlOTEzOGE0MGFkZGRjOWY2ZDU3ODc1
NmM4NTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgICAgICBk
ZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEltYWdl
RnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7
CisgICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0
RnJhbWVBdEluZGV4KDApOwogICAgICAgICBkZWNvZGVkSW1hZ2UuYWRvcHRDRihpbWFnZUZyYW1l
RGF0YS5tX2ZyYW1lKTsKICAgICAgICAgY2dJbWFnZSA9IGRlY29kZWRJbWFnZS5nZXQoKTsKICAg
ICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VD
Ry5jcHAKaW5kZXggM2RjMWM2MTU4MmYxYTAyOTY0ZWVkNjliOTA3NzcyNWY4N2NjYzdhZi4uNjVk
MmU5NjQwNDBhNDc5ZTExYjg5ODFmZGI4Y2MyNGE1ZTM4NzZlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAgLTgxLDYgKzgxLDcgQEAg
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCiAgICAgLCBtX3NpemVBdmFpbGFi
bGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5n
RnJhbWUoZmFsc2UpCiB7CiAgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChjZ0lt
YWdlKTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwCmluZGV4IDYwYmEzYzk0YjYzODAxMDU4MDZlZmU3MTg1NWQzYTRiNDNiMzc2NjIuLjI0
ZDcwMjMyZWZkMjlmNjM4ZGE0YTA5YTQ2NzVjN2VlN2U4YTI3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIklt
YWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMzA5LDExICszMTAsMTIgQEAgc2l6
ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVy
ID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdlRnJhbWVEYXRh
IEltYWdlU291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgYm9vbCkKIHsK
ICAgICBBU1NFUlQobV9vYnNlcnZlcik7CiAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURh
dGEgPSBjcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2Vp
dmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVEYXRhKTsKKyAgICByZXR1cm4gaW1hZ2VG
cmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAKaW5kZXggY2Q4Nzk0ZTUzOWNmZDUwZWU4
OGE3N2UwN2M0NWY4MmFiOWNkNzM1My4uOTAwMGZjM2RmYjViMzA5Y2RhZmFhOTk3MTI1YjdiOTYz
NWVmM2ZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnZnL0ltYWdlT3BlblZHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIEJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShUaWxlZEltYWdlT3BlblZHKiB0aWxlZEltYWdlLCBJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXNVbmlmb3Jt
RnJhbWVTaXplKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lz
Q2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIEFTU0VSVChtX3NpemUud2lkdGgoKSA+IDApOwog
ICAgIEFTU0VSVChtX3NpemUuaGVpZ2h0KCkgPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggNTcyMDM5ZTlkZWMwZWJkMTA3ZjQ3
MzU1ZDBiNDI4NWYyNWJhYmIzNS4uZDg1YWQzODVjYmRkOGVjMjhhNWViNmNhNDBmN2MxNTNmZTA3
MTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1h
Z2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VR
dC5jcHAKQEAgLTIwOSw2ICsyMDksNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUVBpeG1h
cCogcGl4bWFwLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1
ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0
cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBpbnQgd2lkdGggPSBw
aXhtYXAtPndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHBpeG1hcC0+aGVpZ2h0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggZjU2ZDcyNDVhZDEwZWMzYWU4NWJlZDQyNzA5
ZTZmNmI0NzJiMmM1MC4uMWYwNDU5YzU0YWM1MDVmYzcyYmQzY2IwODZlYWVlMjY4OGE1ZTJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjIsNyArNjIsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgICAgICBkZWNv
ZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5m
cmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEltYWdlRnJh
bWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7Cisg
ICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJh
bWVBdEluZGV4KDApOwogICAgICAgICBpZiAoIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaGFzQWxwaGEgPSBpbWFnZUZyYW1l
RGF0YS5tX2hhc0FscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd3gvSW1hZ2VXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
eC9JbWFnZVd4LmNwcAppbmRleCA5MmY2ZWI3YzYxYWU3NDI1MTljZWY2Yzc5NDYyMmZkMmRjZGFi
NmM1Li41NjlkYzUyNjNhZmZmMWUyYzlkNjI0NjU2NGM3YzEzNmM5M2MzOThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcApAQCAtOTUsNiAr
OTUsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmIGJpdG1hcCkK
ICAgICAsIG1fZGVjb2RlZFNpemUoMCkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAg
ICAsIG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAg
ICBtX2RlY29kZWRTaXplID0gYml0bWFwLkdldFdpZHRoKCkgKiBiaXRtYXAuR2V0SGVpZ2h0KCkg
KiA0OwogICAgIG1fc2l6ZSA9IEludFNpemUoYml0bWFwLkdldFdpZHRoKCksIGJpdG1hcC5HZXRI
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3MmI1ZGRjMmRlMzFkMDA0MDcyN2Q0NGU5NTE2
MmFkZjZiYWM3NmM3Li45MDRmODY2ODYzMzJkYThjMzI2ZGQwZjZlYjU3YmI0NTU2Nzc1ZDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTE0MCw2ICsxNDAsNyBAQCBJbWFnZURlY29kZXIqIEltYWdlRGVj
b2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhh
TwogCiBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKICAgICA6IG1faGFzQWxwaGEoZmFsc2UpCisg
ICAgLCBtX2xhc3REZWNvZGVkUm93KDApCiAgICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQogICAg
ICwgbV9kdXJhdGlvbigwKQogICAgICwgbV9kaXNwb3NhbE1ldGhvZChEaXNwb3NlTm90U3BlY2lm
aWVkKQpAQCAtMTY1LDYgKzE2Niw3IEBAIHZvaWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEo
KQogewogICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CiAgICAgbV9ieXRlcyA9IDA7CisgICAg
bV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OwogICAgIC8v
IE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVCdWZmZXJD
YWNoZSgpIGNhbGxzIHRoaXMKICAgICAvLyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwgYnV0IG90
aGVyIGZ1bmN0aW9ucyBsaWtlIGluaXRGcmFtZUJ1ZmZlcigpIGFuZApAQCAtMTg3LDYgKzE4OSw3
IEBAIGJvb2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3Ro
ZXIpCiAgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKICAgICBtX3NpemUgPSBv
dGhlci5tX3NpemU7CiAgICAgc2V0SGFzQWxwaGEob3RoZXIubV9oYXNBbHBoYSk7CisgICAgbV9s
YXN0RGVjb2RlZFJvdyA9IG90aGVyLm1fbGFzdERlY29kZWRSb3c7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTE5OSw2ICsyMDIsNyBAQCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5l
d1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQogICAgIG1fYmFja2luZ1N0b3JlLnJlc2l6ZShiYWNraW5n
U3RvcmVTaXplKTsKICAgICBtX2J5dGVzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOwogICAgIG1f
c2l6ZSA9IEludFNpemUobmV3V2lkdGgsIG5ld0hlaWdodCk7CisgICAgbV9sYXN0RGVjb2RlZFJv
dyA9IDA7CiAKICAgICB6ZXJvRmlsbFBpeGVsRGF0YSgpOwogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaAppbmRleCA3NjBhYzkzZjg1NzUwM2FmMTg3NjczZTc0ZDYwMWQyZjI4NTg3ZjM0Li40NjZm
YzFhNjQ3NmQ4MDZhNTAzZTc5N2IzZDI2YzIwMGY0OTM4M2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMTE4
LDYgKzExOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTmF0aXZlSW1hZ2VQdHIg
YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25z
dDsKKyAgICAgICAgaW50IGxhc3REZWNvZGVkUm93KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RGVj
b2RlZFJvdzsgfQogICAgICAgICBjb25zdCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxGcmFtZVJlY3Q7IH0KICAgICAgICAgRnJhbWVTdGF0dXMg
c3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KICAgICAgICAgdW5zaWduZWQgZHVy
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CkBAIC0xMjUsNiArMTI2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIAogICAgICAgICB2b2lkIHNldEhhc0Fs
cGhhKGJvb2wgYWxwaGEpOworICAgICAgICBpbmxpbmUgdm9pZCBzZXRMYXN0RGVjb2RlZFJvdyhp
bnQgbGFzdERlY29kZWRSb3cpIHsgbV9sYXN0RGVjb2RlZFJvdyA9IGxhc3REZWNvZGVkUm93OyB9
CiAgICAgICAgIHZvaWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYpOwogICAg
ICAgICB2b2lkIHNldE9yaWdpbmFsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHIpIHsgbV9vcmln
aW5hbEZyYW1lUmVjdCA9IHI7IH0KICAgICAgICAgdm9pZCBzZXRTdGF0dXMoRnJhbWVTdGF0dXMg
c3RhdHVzKTsKQEAgLTE4MSw2ICsxODMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBEbyB3ZSBuZWVkIG1fY29sb3JQcm9maWxlIGFueW1vcmU/CiAgICAgICAgIENv
bG9yUHJvZmlsZSBtX2NvbG9yUHJvZmlsZTsKICNlbmRpZgorICAgICAgICBpbnQgbV9sYXN0RGVj
b2RlZFJvdzsKICAgICAgICAgSW50UmVjdCBtX29yaWdpbmFsRnJhbWVSZWN0OyAvLyBUaGlzIHdp
bGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBmcmFtZXMgd2hvc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmlnaW5hbCByZWN0IHdhcyBzbWFsbGVy
IHRoYW4gdGhlCkBAIC0yMjgsNiArMjMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKICAgICAgICAgfQog
CisgICAgICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQo
KTsgfQorCiAgICAgICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8g
Z2V0IHRoZSBzaXplIChpZiBwb3NzaWJsZSkuCiAgICAgICAgIC8vIEZJWE1FOiBSaWdodCBub3cg
dGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCiAgICAgICAg
IC8vIGRlY29kZSBjYWxsIG91dCBhbmQgdXNlIGl0IGhlcmUuCkBAIC0yNzYsNiArMjgxLDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50
ZXIuCiAgICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCkgPSAwOwogCisgICAgICAgIC8vIFJldHVybnMgYW4gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50
ZXIgd2l0aG91dCBkZWNvZGluZyBtb3JlLgorICAgICAgICBJbWFnZUZyYW1lKiBmaXJzdEltYWdl
RnJhbWVXaXRob3V0RGVjb2RlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZnJh
bWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkgPyAwIDogJm1fZnJhbWVCdWZmZXJDYWNoZVswXTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9v
bCBmbGFnKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBmbGFnOyB9CiAgICAgICAg
IGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCA2YTY1ZTYxN2QxOWU2N2JmYTIxODA1Mzg3YzExOTVkYTQ4MjFk
YjZkLi5iZGNhZWYwNWVhNDAxMTVkMDZjZjczNWYwOTE5YWFjNGIyMTllZWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Nyw2ICsxNTcsNyBAQCBp
bnQgSW1hZ2VSZWFkZXI6OmRlY29kZShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIEltYWdl
RnJhbWUqIGFGcmFtZSkKICAgICAgICAgICAgIGFGcmFtZS0+c2V0UkdCQShpLCBqLCBjdXJQdHJb
MF0sIGN1clB0clsxXSwgY3VyUHRyWzJdLCAyNTUpOwogICAgICAgICAgICAgY3VyUHRyICs9IDM7
CiAgICAgICAgIH0KKyAgICAgICAgYUZyYW1lLT5zZXRMYXN0RGVjb2RlZFJvdyhqKTsKICAgICB9
CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDIwYTI0
OGM3ZDNiY2IxMWNhZDdjNjc2OTVlYjgyNzU3NTI3ODI0OTMuLmY3NGRkZTNhMGRmZmFhYjc5YjA1
YWI0MzhiZDFmZjhmZWEyYzI0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC02
NCw4ICs2NCwxNSBAQCB2b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBib29sIEJNUEltYWdlRGVjb2Rlcjo6aXNT
aXplQXZhaWxhYmxlKCkKIHsKLSAgICBpZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxl
KCkpCisgICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpKSB7CisgICAgICAg
IC8vIE9ubHkgQk1QSW1hZ2VEZWNvZGVyIG11c3QgbWFrZSBtX2ZyYW1lQnVmZmVyQ2FjaGVbMF0g
aW4gaXNTaXplQXZhaWxhYmxlKCksCisgICAgICAgIC8vIGJlY2F1c2UgdGhlIGRlZmF1bHQgdmFs
dWUgb2YgSW1hZ2VGcmFtZTo6bV9sYXN0RGVjb2RlZFJvdyBjYW4gYmUgImhlaWdodCAtIDEiLgor
ICAgICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
bV9mcmFtZUJ1ZmZlckNhY2hlLnJlc2l6ZSgxKTsKKyAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJD
YWNoZS5maXJzdCgpLnNldFByZW11bHRpcGx5QWxwaGEobV9wcmVtdWx0aXBseUFscGhhKTsKKyAg
ICAgICAgfQogICAgICAgICBkZWNvZGUodHJ1ZSk7CisgICAgfQogCiAgICAgcmV0dXJuIEltYWdl
RGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcApp
bmRleCA1YzAwNTUzNGVjZDkyMTM0YTEzYjMyOTU4OTI3NzkwZjA3YWQwZjgxLi40ZjdlMzE3OWU2
NjYzMzhhM2ExMTRiMWIyMmExZTM0OTQ4Mzk0NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5j
cHAKQEAgLTY0LDggKzY0LDExIEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OmRlY29kZUJNUChib29s
IG9ubHlTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBwcm9jZXNzSW5mb0hl
YWRlcigpIHNldCB0aGUgc2l6ZSwgc28gaWYgdGhhdCdzIGFsbCB3ZSBuZWVkZWQsIHdlJ3JlIGRv
bmUuCi0gICAgaWYgKG9ubHlTaXplKQorICAgIGlmIChvbmx5U2l6ZSkgeworICAgICAgICBpZiAo
IW1faXNUb3BEb3duKQorICAgICAgICAgICAgbV9idWZmZXItPnNldExhc3REZWNvZGVkUm93KG1f
cGFyZW50LT5zaXplKCkuaGVpZ2h0KCkgLSAxKTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQogCiAgICAgLy8gUmVhZCBhbmQgcHJvY2VzcyB0aGUgYml0bWFza3MsIGlmIG5lZWRlZC4KICAg
ICBpZiAobV9uZWVkVG9Qcm9jZXNzQml0bWFza3MgJiYgIXByb2Nlc3NCaXRtYXNrcygpKQpAQCAt
NjI0LDYgKzYyNyw3IEBAIGJvb2wgQk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKCkKIAog
ICAgICAgICAgICAgICAgIG1fZGVjb2RlZE9mZnNldCArPSAyOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV9idWZmZXItPnNldExhc3REZWNvZGVkUm93KG1fY29vcmQueSgpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTcxNyw2ICs3MjEsNyBAQCBCTVBJbWFnZVJlYWRlcjo6UHJvY2Vz
c2luZ1Jlc3VsdCBCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc05vblJMRURhdGEoYm9vbCBpblJMRSwg
aQogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50KHBpeGVsLCAyKSwgYWxwaGEp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVj
b2RlZFJvdyhtX2Nvb3JkLnkoKSk7CiAKICAgICAgICAgLy8gU3VjY2Vzcywga2VlcCBnb2luZy4K
ICAgICAgICAgbV9kZWNvZGVkT2Zmc2V0ICs9IHBhZGRlZE51bUJ5dGVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCA1ZjYxOTNiOGY5ZTFiYTkzN2I2ZTNmYzczMTc0OTI0MzRkYWFl
MmRhLi43MTk4YTExYzFmMTU2ODAwYzdhYmIxZmZlYTQwMWIyYzc1OTA4NWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjQ5LDEwICsyNDksMTQgQEAgYm9vbCBHSUZJbWFnZURl
Y29kZXI6OmhhdmVEZWNvZGVkUm93KHVuc2lnbmVkIGZyYW1lSW5kZXgsIHVuc2lnbmVkIGNoYXIq
IHJvd0J1ZmYKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0UkdCQSh4LCB5QmVnaW4sIDAsIDAs
IDAsIDApOwogICAgICAgICB9CiAgICAgfQorICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5
QmVnaW4pOwogCiAgICAgLy8gVGVsbCB0aGUgZnJhbWUgdG8gY29weSB0aGUgcm93IGRhdGEgaWYg
bmVlZCBiZS4KLSAgICBpZiAocmVwZWF0Q291bnQgPiAxKQorICAgIGlmIChyZXBlYXRDb3VudCA+
IDEpIHsKICAgICAgICAgYnVmZmVyLmNvcHlSb3dOVGltZXMoeEJlZ2luLCB4RW5kLCB5QmVnaW4s
IHlFbmQpOworICAgICAgICBBU1NFUlQoKHlFbmQgLSAxKSA+PSAwKTsKKyAgICAgICAgYnVmZmVy
LnNldExhc3REZWNvZGVkUm93KHlFbmQgLSAxKTsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTM5MCw2ICszOTQsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVm
ZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSBwcmV2
UmVjdC55KCk7IHkgPCBwcmV2UmVjdC5tYXhZKCk7ICsreSkgewogICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgeCA9IHByZXZSZWN0LngoKTsgeCA8IHByZXZSZWN0Lm1heFgoKTsgKyt4KQogICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0UkdCQSh4LCB5LCAwLCAwLCAwLCAwKTsKKyAg
ICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0TGFzdERlY29kZWRSb3coeSk7CiAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgaWYgKChwcmV2UmVjdC53aWR0aCgpID4gMCkgJiYgKHByZXZS
ZWN0LmhlaWdodCgpID4gMCkpCiAgICAgICAgICAgICAgICAgICBidWZmZXItPnNldEhhc0FscGhh
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggOTFmMTIzNmIzNTli
YzE1NWFmMzdjN2ZlMmNlMzZlYTczYzUwOTQ5Ni4uNDg2MWNiNjY3MjM5NzhjYmRiMzc3OGUwYjM3
ODE5OGVlYjliMDRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC01Nzcs
NiArNTc3LDcgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoKQogICAg
IGlmICh0dXJib1N3aXp6bGVkKGluZm8tPm91dF9jb2xvcl9zcGFjZSkpIHsKICAgICAgICAgQVNT
RVJUKCFtX3NjYWxlZCk7CiAgICAgICAgIHdoaWxlIChpbmZvLT5vdXRwdXRfc2NhbmxpbmUgPCBp
bmZvLT5vdXRwdXRfaGVpZ2h0KSB7CisgICAgICAgICAgICBidWZmZXIuc2V0TGFzdERlY29kZWRS
b3coaW5mby0+b3V0cHV0X3NjYW5saW5lKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHJv
dyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGJ1ZmZlci5nZXRBZGRyKDAsIGlu
Zm8tPm91dHB1dF9zY2FubGluZSkpOwogICAgICAgICAgICAgaWYgKGpwZWdfcmVhZF9zY2FubGlu
ZXMoaW5mbywgJnJvdywgMSkgIT0gMSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02MjgsNiArNjI5LDcgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMo
KQogICAgICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgICAgICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3coZGVzdFkpOwogICAgIH0K
IAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxMzhk
NWM1MTI5MWVhMjZmNjk2NDNmNmFhNDQ4ODRiYjVjNjQ4MGVmLi44MTBjYWE3MjA4MjE5ZmZmNmNm
NjI5NzRlOGVmN2VmMWIzNDUxYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NTIwLDYgKzUyMCw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWdu
ZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKIAogICAgIGlmIChub25Ucml2
aWFsQWxwaGEgJiYgIWJ1ZmZlci5oYXNBbHBoYSgpKQogICAgICAgICBidWZmZXIuc2V0SGFzQWxw
aGEobm9uVHJpdmlhbEFscGhhKTsKKyAgICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3coeSk7CiB9
CiAKIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpwbmdDb21wbGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURl
Y29kZXJTa2lhLmNwcAppbmRleCA1Y2MxMzJjNGQ0ODQwMGI4MTUyZWU1ZjRmZWYyMjQyYzQyOWRi
NmI2Li4xMzMxOGEzODQ2ZmY1YWViZDkzMDJhZDMyZTE1MzIzZGQ4NzM4Y2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2Rl
clNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Nr
aWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgSW1hZ2VGcmFtZSYgSW1h
Z2VGcmFtZTo6b3BlcmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogdm9pZCBJbWFnZUZy
YW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7CiAgICAgbV9iaXRtYXAuYml0bWFwKCkucmVzZXQoKTsK
KyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAg
ICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1
ZmZlckNhY2hlKCkKICAgICAvLyBjYWxscyB0aGlzIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBi
dXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UKQEAgLTc2LDYgKzc3LDcgQEAgYm9vbCBJbWFnZUZyYW1l
Ojpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKIAogICAgIG1fYml0bWFw
LmJpdG1hcCgpLnJlc2V0KCk7CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VTa2lhJiBvdGhlckJpdG1h
cCA9IG90aGVyLm1fYml0bWFwOworICAgIG1fbGFzdERlY29kZWRSb3cgPSBvdGhlci5tX2xhc3RE
ZWNvZGVkUm93OwogICAgIHJldHVybiBvdGhlckJpdG1hcC5iaXRtYXAoKS5jb3B5VG8oJm1fYml0
bWFwLmJpdG1hcCgpLCBvdGhlckJpdG1hcC5iaXRtYXAoKS5jb25maWcoKSk7CiB9CiAKQEAgLTg0
LDYgKzg2LDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBuZXdXaWR0aCwgaW50IG5l
d0hlaWdodCkKICAgICAvLyBzZXRTaXplKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UsIGl0
IGxlYWtzIG1lbW9yeSBvdGhlcndpc2UuCiAgICAgQVNTRVJUKCF3aWR0aCgpICYmICFoZWlnaHQo
KSk7CiAKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKICAgICBtX2JpdG1hcC5iaXRtYXAoKS5z
ZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCBuZXdXaWR0aCwgbmV3SGVpZ2h0
KTsKICAgICBpZiAoIW1fYml0bWFwLmJpdG1hcCgpLmFsbG9jUGl4ZWxzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDA4MmUzM2Rk
YjJhMzYwZTM4ODhkNzliMDNhOWMyMWNjZGI4YzAzYzIuLmE5Zjk4YWQ4MGY2ZjE5ODA1OGQyYWZk
ZWJiNmE0MDllMjNhZTc5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MTMyLDE5ICsxMzIsMjYgQEAgYm9vbCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5
U2l6ZSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICB9CiAKLSAgICBzd2l0
Y2ggKFdlYlBJVXBkYXRlKG1fZGVjb2RlciwgZGF0YUJ5dGVzLCBkYXRhU2l6ZSkpIHsKLSAgICBj
YXNlIFZQOF9TVEFUVVNfT0s6Ci0gICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZSk7Ci0gICAgICAgIFdlYlBJRGVsZXRlKG1fZGVjb2Rlcik7Ci0gICAgICAg
IG1fZGVjb2RlciA9IDA7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgVlA4X1NUQVRV
U19TVVNQRU5ERUQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkZWZhdWx0OgorICAgIGNv
bnN0IFZQOFN0YXR1c0NvZGUgc3RhdHVzID0gV2ViUElVcGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0
ZXMsIGRhdGFTaXplKTsKKyAgICBpZiAoc3RhdHVzICE9IFZQOF9TVEFUVVNfT0sgJiYgc3RhdHVz
ICE9IFZQOF9TVEFUVVNfU1VTUEVOREVEKSB7CiAgICAgICAgIFdlYlBJRGVsZXRlKG1fZGVjb2Rl
cik7CiAgICAgICAgIG1fZGVjb2RlciA9IDA7CiAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsK
ICAgICB9CisgICAgaW50IGxhc3RZID0gMDsKKyAgICBpZiAoIVdlYlBJRGVjR2V0UkdCKG1fZGVj
b2RlciwgJmxhc3RZLCAwLCAwLCAwKSkKKyAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOworICAg
IEFTU0VSVChsYXN0WSA+PSAwKTsKKyAgICBBU1NFUlQobGFzdFkgPD0gc2l6ZSgpLmhlaWdodCgp
KTsKKyAgICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3cobGFzdFkgPyBsYXN0WSAtIDEgOiAwKTsK
KworICAgIGlmIChzdGF0dXMgPT0gVlA4X1NUQVRVU19TVVNQRU5ERUQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0
ZSk7CisgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKKyAgICBtX2RlY29kZXIgPSAwOworICAg
IHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA3NzZlMjc4N2JmMjg5NDlkNGYzMjFiMTcz
NTQzYmM4NDJjOGU1MDdlLi5lZGJhNjgwMTk4YzhhODFiOTdlOGNjNDc1NWJjNzk0N2NmMTI5ZTdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAgTGF5b3V0VW5pdCB1
c2FibGVXaWR0aCA9IGNXaWR0aCAtIDI7CiAgICAgICAgICAgICBMYXlvdXRVbml0IHVzYWJsZUhl
aWdodCA9IGNIZWlnaHQgLSAyOwogCi0gICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
bV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gdG9S
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFnZSgp
LmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJl
ZCgpICYmICFpbWFnZS0+aXNOdWxsKCkgJiYgdXNhYmxlV2lkdGggPj0gaW1hZ2UtPndpZHRoKCkg
JiYgdXNhYmxlSGVpZ2h0ID49IGltYWdlLT5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yID0gV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3IoZnJhbWUo
KSk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAg
ICAgICAgICBpZiAoY2VudGVyWSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAw
OwogICAgICAgICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0U2l6ZShsZWZ0Qm9yZGVyICsg
bGVmdFBhZCArIGNlbnRlclggKyAxLCB0b3BCb3JkZXIgKyB0b3BQYWQgKyBjZW50ZXJZICsgMSk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgp
LT5jb2xvclNwYWNlKCksIEludFJlY3Qocm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0ICsgaW1h
Z2VPZmZzZXQpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
aW1hZ2UsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFp
bnRPZmZzZXQgKyBpbWFnZU9mZnNldCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZVNvdXJjZU92ZXIs
IHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwogICAgICAgICAgICAgICAgIGVycm9y
UGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNDQyLDcgKzQ0Miw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0lt
YWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgYWxpZ25lZFJlY3Qu
d2lkdGgoKSA8PSAwIHx8IGFsaWduZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGln
bmVkUmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSk7CisgICAgSW1hZ2UqIGltZyA9
IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoYWxpZ25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkpLmdldCgpKTsKICAg
ICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ1MCw3
ICs0NTAsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdAogICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbHQgPyBpbWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0
b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJl
c291cmNlLT5pbWFnZSgpLmdldCgpOwogICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBz
aG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0
LnNpemUoKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
YWxpZ25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkpLmdldCgpLCBzdHlsZSgp
LT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShpbWcsIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIGNv
bXBvc2l0ZU9wZXJhdG9yLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VMb3dR
dWFsaXR5U2NhbGluZyk7CiB9CiAKIGJvb2wgUmVuZGVySW1hZ2U6OmJveFNoYWRvd1Nob3VsZEJl
QXBwbGllZFRvQmFja2dyb3VuZChCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFu
Y2UsIElubGluZUZsb3dCb3gqKSBjb25zdApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wgUmVuZGVy
SW1hZ2U6OmJhY2tncm91bmRJc09ic2N1cmVkKCkgY29uc3QKIAogICAgIC8vIENoZWNrIGZvciBi
aXRtYXAgaW1hZ2Ugd2l0aCBhbHBoYS4KICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlKCkuZ2V0KCk7Ci0gICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzQml0bWFwSW1h
Z2UoKSB8fCBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKKyAgICBpZiAoIWltYWdlIHx8
ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1h
Z2UpLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBlZTBhNDQyZjc0ZGVjMDk3OTM3ODNmYmY2YWQwY2Yw
NTY4NTBmOGQzLi4yOWE0ZjA0NWUxNmQ1ZTZkMDgyODY1MmM3M2NhNGFkNGFkNjQ0ZGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5o
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIK
QEAgLTEwNzYsNiArMTA3NywxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1h
Z2VDb250ZW50cygpCiAgICAgaWYgKCFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgLy8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBpbWFnZSBpcyBmdWxs
eSBkZWNvZGVkIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBsYXllci4KKyAgICBpZiAoaW1hZ2Ut
PmlzQml0bWFwSW1hZ2UoKSAmJiAhdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSktPmN1
cnJlbnRGcmFtZUlzQ29tcGxldGUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gVGhpcyBp
cyBhIG5vLW9wIGlmIHRoZSBsYXllciBkb2Vzbid0IGhhdmUgYW4gaW5uZXIgbGF5ZXIgZm9yIHRo
ZSBpbWFnZS4KICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShpbWFnZSk7
CiAgICAgdXBkYXRlRHJhd3NDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDU2YmU1Y2Q0MTZiY2RlMjZlMGE4NTViZTFh
ZGNlYTJiNDNmYzBiOTUuLmExOTZlNzVmOGE5ZGYxYTI4ZGM2ZTdiYTkwNTRlOTZmMTU1MTUzOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRl
ICJTVkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCkBAIC0xMjcsMTQgKzEyOCwxNCBAQCB2b2lkIFJlbmRl
clNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
KQogICAgICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0KHRoaXMs
IGNoaWxkUGFpbnRJbmZvKTsKIAogICAgICAgICAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNS
ZW5kZXJpbmdQcmVwYXJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKyAgICAgICAgICAgICAgICBJbWFnZSogaW1h
Z2UgPSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2Ut
PmltYWdlKCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1f
b2JqZWN0Qm91bmRpbmdCb3g7CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwg
MCwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSk7CiAKICAgICAgICAgICAgICAgICBT
VkdJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVu
dCo+KG5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50LT5wcmVzZXJ2ZUFzcGVj
dFJhdGlvKCkudHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAgICAgICAgICAg
ICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgICAgICAgICBjaGls
ZFBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCBzcmNSZWN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwCmluZGV4IDNiYWVhMjdjOWY1NTQ4M2Fm
MDU4YWFmYjYxODEwNzJlMjQ0YTA2ZDAuLmNkZTEzOWZjZWNhZTU4MzhmMzYyNWY5Yzg3OTkwYTM3
NzIxMDk0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIFdlYkltYWdlIFdlYkltYWdlOjpmcm9tRGF0YShjb25zdCBXZWJEYXRh
JiBkYXRhLCBjb25zdCBXZWJTaXplJiBkZXNpcmVkU2l6ZSkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLmNyZWF0ZUZyYW1lQXRJ
bmRleChpbmRleCk7CisgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2Uu
cmVxdWVzdEZyYW1lQXRJbmRleChpbmRleCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGZy
YW1lKEFkb3B0Q0YsIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybiBXZWJJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlU2tpYS5jcHAKaW5kZXggZmIwZGY3Y2FmZmNhMWZhMGIzN2Q2ZTYzYTllZTE3MDgyODg2
MDYwNS4uNWQ4NjRhMjdiYTkxMDYwMDM1OTI5MWE1NzZiMjQ2NDZiMDU3ZTFmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IFdlYkltYWdlIFdlYkltYWdlOjpmcm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhLCBjb25zdCBX
ZWJTaXplJiBkZXNpcmVkU2l6ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIEltYWdlRnJhbWVE
YXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7Cisg
ICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UucmVxdWVzdEZyYW1lQXRJ
bmRleChpbmRleCk7CiAgICAgT3duUHRyPE5hdGl2ZUltYWdlU2tpYT4gZnJhbWUgPSBhZG9wdFB0
cihpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm4gV2ViSW1hZ2UoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151864</attachid>
            <date>2012-07-11 22:53:11 -0700</date>
            <delta_ts>2012-07-17 16:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120712145308.patch</filename>
            <type>text/plain</type>
            <size>92986</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmEwZGRmMDQzYThjMzNi
MTFkYzNiODIwOGE5YzZmZDU1NzdjY2ZjZC4uNjkwZmNjYTVjNTI2OGMxMmYyMGUzNmNkMGMwYjZi
YjgzYzQxODAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5OSBAQAogMjAxMi0wNy0xMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpsYXN0RGVj
b2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRMYXN0RGVjb2RlZFJv
dyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VS
ZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVy
Ojpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xl
YXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKworMjAxMi0wNy0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBSZWZhY3RvcmluZyBtZXRhZGF0YSBv
ZiBCaXRtYXBJbWFnZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNzU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDJkMmI5N2U1NTE2
NThlMzYxM2JlYzk5ODEwOTVmNTg0NDkzMjFiYS4uNGRiYzRmOTVhOTA1YmFiZmFjOWNiZWZlZGYy
ZGFhNTBkM2FmOGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAxMi0wNy0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
KworICAgICAgICBBZGQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcg
YW5kIEt3YW5nIFl1bCBTZW8uCisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAg
ICAgICB0aW1lIGluIGxvYWRpbmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxl
IGltYWdlIGRlY29kaW5nIHRocmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFj
a2dyb3VuZC4KKworICAgICAgICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1
bWVudC9wdWI/aWQ9MTJnZjdNaE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAK
KyAgICAgICAgZm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgICogc3JjL1dlYklt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgorICAgICAg
ICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJv
bURhdGEpOgorCiAyMDEyLTA3LTAzICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDZkMTcyMTlmMDY0NDYyMDYxZGU1NzcwOTU2MTQyZTIyZDZh
NzA1M2UuLjkzMjE2NDE1MjA0ZDRlM2E2MGI0ZTY3ZTkyMzVjMjhmOTk4OGExMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xMjAwLDYgKzEyMDAsOCBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA2ODIyNGE4NDY4ZWMzMGJlY2MxNWRiNDQxMmJkZGQ0NmRiMmRk
ZTA1Li40YzZiZTMxOThjZWQ0N2E5NmYwYzVlNzE0NjFlYjk0ZDE3MWIyZTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMxOTMsNiArMzE5MywxMSBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGFzaEFycmF5LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDAxNmQ3
MGRhNjMwNjBlNmI0MTIzZjc1ODYxMjkwNTRhYjk5ZmNjOTcuLjE3ODBlYTNjYWI2NzJlOTI2NjNi
NDJmNGMzZjczNDdkYWFjZmRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTEwMyw2ICsxMTAzLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseS5jcHAgXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFp
bmVkTW9kZUJpdG1hcEltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5jcHAgXApAQCAtMTEyNiw2ICsxMTI3
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlv
bi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhcmFs
bGVsSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIFwKQEAgLTIyNDEsNiArMjI0Myw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBcCiAgICAg
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmggXApAQCAtMjMwNyw2ICsy
MzEwLDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNo
LmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJP
YnNlcnZlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXR0ZXJuLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJhMTJiYWYyZmQ3NmM4MmIyMmJkOWJhNmI1
ZTVjZmM2ZWYxNjI3MjcuLmFjYmY4NDBmZjVjNTlhOTc5NTY4MTcyNGZkNTllODM1ZWE1ODQzOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MDMsMTEgKzM1MDMsMTYgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFy
YWxsZWxJbWFnZURlY29kZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJh
dmVyc2FsU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1YTEwN2IxYWI2Zjcx
MWJjNmJjNDU0OTczNmViYTkzZDgyNjhiZTBjLi42NTRkZmJhMzU0OTMyM2Q5ZjQ3NzNiOGI5ZmI4
OGY4Y2VkYjEzY2JlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagpAQCAtMjkzOTgsNiArMjkzOTgsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVs
SW1hZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAt
Mjk0MjYsNiArMjk0MzgsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTY2
Njc2YzViOTQ0ZmRkN2EzODQ3ODdkNTljZmY1ZTVlNTgyMDU2Yy4uMjQ1YzZlNmNhMjg3MjBiOTYw
ZGM2ZWMzMjkyYWQ2ZGI0ZDFhMjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxOCw2ICsxNDE4LDggQEAKIAkJNEIzMDQz
Q0QwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4
MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQx
IC8qIEltYWdlU291cmNlQ0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICov
OyB9OworCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIz
NDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsg
fTsKKwkJNUIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5
MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJ
NEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMz
OUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlQ0YuY3BwICovOyB9OwpAQCAtODUxMCw2ICs4NTEyLDggQEAKIAkJNEIzMDQzQ0Iw
QUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2
RjMwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1MzgsNiArMTk1NDIsOCBAQAogCQkJ
CUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUz
NTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1
MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4
MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJ
CQkJNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgg
Ki8sCiAJCQkJQjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4
Q0cuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NDc2LDYgKzI0NDgyLDcgQEAK
IAkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyog
UmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUw
RDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwQTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwQTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNv
bnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzY1NSw2ICsyNzY2Miw3IEBACiAJCQkJNTE0
Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNl
Q0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8q
IFJlc291cmNlUmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1
MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkQzMTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDMxNjBBNjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBS
ZXZlcmJDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0
ZDRjNjE5OTEzZDFiMzQ2OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2
MGM0ODFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcApAQCAtNjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAg
LCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFs
c2UpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5
LDEyIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgICAgICAvLyBOT1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBo
ZXJlLCB0aGF0IHdpbGwgdHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGku
ZS4gbmV2ZXItZGVjb2RlZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFz
cykgZnJhbWVzIQotICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNb
aV0ubV9pc0NvbXBsZXRlKQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJy
ZW50IGZyYW1lLCBiZWNhdXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAg
ICAgICAvLyBpbiByZXRhaW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRo
aXMgZGVjb2RlZCBpbWFnZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlz
IHJlbW92ZWQgaGVyZSwgdGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0
ZSBib3guCisgICAgICAgIC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRl
ciB3aGVuIHJldGFpbmVkIG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmICht
X2ZyYW1lc1tpXS5tX2ZyYW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJy
ZW50RnJhbWUgIT0gaSkKICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ld
LmNsZWFyKHRydWUpID8gMSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3Rp
ZnkoZnJhbWVzQ2xlYXJlZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6
OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFt
ZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2Zy
YW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2Fj
aGluZ0ZyYW1lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4
aXN0IHdoZW4gbV9pc0NvbXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3
IGZyYW1lIGV2ZW4gaWYgbV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpk
YXRhQ2hhbmdlZCBmb3IgZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4
ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJh
bWVzW2luZGV4XS5tX2lzQ29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAg
IG1faXNDYWNoaW5nRnJhbWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAg
ICAgICAgbV9pc0NhY2hpbmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNjcsMTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KHNpemVfdCBpbmRleCkKICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAg
ICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJh
bWVBdEluZGV4KGluZGV4KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4
LCByZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJl
Y2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1h
Z2VGcmFtZURhdGEpCitib29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBj
b25zdAogeworICAgIHJldHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWlu
ZWRNb2RlSW1hZ2UtPnJldGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcElt
YWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFt
ZURhdGEmIGltYWdlRnJhbWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2Rl
ckNhbmNlbGVkKQoreworICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBp
bmRpcmVjdGx5IGluIHRoaXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVk
TW9kZVNhdmVyKG1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8v
IG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVw
bGFjZWQgd2l0aCBuZXcgZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xl
YXIgbV9mcmFtZSwgdGhlIG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFn
ZTo6ZGF0YUNoYW5nZWQgZm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0
IGJlIHJlbW92ZWQgaGVyZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1l
c1tpbmRleF0uY2xlYXIodHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90
aWZ5KGZyYW1lc0NsZWFyZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZy
YW1lRGF0YShpbWFnZUZyYW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVD
b3VudCgpOwpAQCAtMjg4LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZl
RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAg
ICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRl
cyAtPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGll
c1NpemUgPSAwOwotICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1h
Z2VPYnNlcnZlcigpKSB7CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXpl
Q2hhbmdlZCh0aGlzLCBkZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tp
bmRleF0ubV9pc0NvbXBsZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxl
ZCkKKyAgICAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywg
SW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAt
MzA5LDcgKzM0NSwxMyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFt
ZUR1cmF0aW9uQXRJbmRleCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZTsKKyAgICAvLyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29k
ZWQgYnkgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBt
X2lzQ29tcGxldGUgaXMgdHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21w
bGV0ZSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6
Y3VycmVudEZyYW1lSXNDb21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2
NjlhMDUxMjFiNS4uOGNiYzY1NDU1MzcwOTFmYjZiYzU1YzU1ZjZlMDkzNzg3OTY3NWYzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIklt
YWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRt
YXBJbWFnZSA6IHB1YmxpYyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAg
IGZyaWVuZCBjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3Mg
R2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OwogICAgIGZyaWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0yMDEsNyArMjA0LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBJbWFnZVNvdXJjZU9ic2VydmVyCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1l
RGF0YSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwg
Y29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0gZmFsc2UsIGJvb2wgcGFyYWxs
ZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVT
aXplKCkgY29uc3Q7CkBAIC0yMzgsNiArMjQxLDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCk7CiAKKyAgICBib29sIGN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKTsKKwogICAg
IC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50
ZXJuYWxseS4KICAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4KTsKICAgICAvLyBDYWxs
ZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0uIFJldHVybnMgZmFsc2Ugb24gaW5k
ZXggb3V0IG9mIGJvdW5kcy4KQEAgLTI5Myw2ICsyOTgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpOwogICAgIHZpcnR1YWwgQ29sb3Igc29s
aWRDb2xvcigpIGNvbnN0OwogICAgIAorICAgIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkg
Y29uc3Q7CisKICAgICBJbWFnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBtdXRhYmxlIEludFNpemUg
bV9zaXplOyAvLyBUaGUgc2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1
c3QgYmUgdGhlIHNpemUgb2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUg
bV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwpAQCAtMzE3LDYgKzMyNCw4IEBAIHByb3RlY3Rl
ZDoKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOyAvLyBUaGUg
c2l6ZSBvZiBkYXRhIGRlY29kZWQgYnkgdGhlIHNvdXJjZSB0byBkZXRlcm1pbmUgaW1hZ2UgcHJv
cGVydGllcyAoZS5nLiBzaXplLCBmcmFtZSBjb3VudCwgZXRjKS4KICAgICBzaXplX3QgbV9mcmFt
ZUNvdW50OwogCisgICAgUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBtX3JldGFpbmVk
TW9kZUltYWdlOworCiAgICAgYm9vbCBtX2lzU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgb3Ig
bm90IHdlIGFyZSBhIDF4MSBzb2xpZCBpbWFnZS4KICAgICBib29sIG1fY2hlY2tlZEZvclNvbGlk
Q29sb3IgOiAxOyAvLyBXaGV0aGVyIHdlJ3ZlIGNoZWNrZWQgdGhlIGZyYW1lIGZvciBzb2xpZCBj
b2xvci4KIApAQCAtMzI3LDYgKzMzNiw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fc2l6ZUF2
YWlsYWJsZSA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGNhbiBvYnRhaW4gdGhlIHNpemUgb2Yg
dGhlIGZpcnN0IGltYWdlIGZyYW1lIHlldCBmcm9tIEltYWdlSU8uCiAgICAgbXV0YWJsZSBib29s
IG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1faGF2ZUZyYW1l
Q291bnQgOiAxOworCisgICAgYm9vbCBtX2lzQ2FjaGluZ0ZyYW1lIDogMTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRl
eCAwMjAzMzRlY2ZkZDU2Y2VkYTQ2ZTdhYTllMzIxZWVmMTU5MmQ0MzkxLi4xMDk5ZGI1Y2FjYWJl
NjA0MjY3Yzk4YzNjNzU1ZDRkMWNkN2Q2Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0zNSw5ICszNSwxMyBAQAogI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZU9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVj
b2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfcmVzb2x1dGlvblRocmVzaG9sZEZvclBh
cmFsbGVsID0gNTEyICogNTEyOworCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKIHVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9
IDEwMjQgKiAxMDI0OwogI2VuZGlmCkBAIC02NiwxMSArNzAsMTUgQEAgSW1hZ2VTb3VyY2U6On5J
bWFnZVNvdXJjZSgpCiB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNp
emVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVy
KQorICAgICAgICAvLyBPbmx5IEdJRiBkZWNvZGVyIGltcGxlbWVudHMgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlLgorICAgICAgICBpZiAobV9kZWNvZGVyICYmICFtX3BhcmFsbGVsRGVjb2RlcikKICAg
ICAgICAgICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJh
bWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVy
LmdldCgpKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOworCiAgICAgZGVsZXRlIG1f
ZGVjb2RlcjsKICAgICBtX2RlY29kZXIgPSAwOwogICAgIGlmIChkYXRhKQpAQCAtODgsNiArOTYs
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0
YSBhbmQgaW5zdGFudGlhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIg
cGx1Z2luLgogICAgIC8vIElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRl
dGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8v
IG1hZGUuCisKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNT
RVJUKG1fZGVjb2Rlcik7CisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1f
ZGVjb2RlcikgewogICAgICAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZVNv
dXJjZVB0cj4oSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQpAQCAtMTAyLDExICsxMTcsMTUgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBTdHJpbmcgSW1h
Z2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxl
bERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+ZmlsZW5h
bWVFeHRlbnNpb24oKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFt
ZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2
YWlsYWJsZSgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKQEAgLTExNiw2ICsxMzUsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpz
aXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50YXRpb24p
CiAgICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVj
b2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQog
CkBAIC0xMjUsNiArMTQ2LDggQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eChzaXplX3QgaW5kZXgsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmIChzaG91
bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+c2l6ZSgpOwogICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogSW50U2l6ZSgpOwog
fQogCkBAIC0xNDAsMjMgKzE2MywxMjAgQEAgc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0
aXRpb25Db3VudCgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAg
ICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rl
ci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAogc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIu
Z2V0KCkpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29k
ZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZykK
K3sKKyAgICBBU1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgaW5kZXgpKTsKKyAgICBB
U1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgIW1fb2JzZXJ2ZXIpKTsKKworICAgIGlm
ICghbV9kZWNvZGVyKSB7CisgICAgICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoaW5kZXgsIEltYWdlRnJhbWVEYXRhKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKKyAgICB9CisKKyAgICBpZiAoIXJldGFpbmVkTW9kZVJlbmRlcmluZyB8fCAhbV9vYnNl
cnZlciB8fCBmaXJzdEZyYW1lSXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm4gc2VyaWFsRGVj
b2RlKGluZGV4KTsKKworICAgIGlmIChzaG91bGREZWNvZGVQYXJhbGxlbCgpKSB7CisgICAgICAg
IHBhcmFsbGVsRGVjb2RlKCk7CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YSgpOworICAg
IH0KKworICAgIHJldHVybiBzZXJpYWxEZWNvZGUoaW5kZXgpOworfQorCitib29sIEltYWdlU291
cmNlOjpzaG91bGREZWNvZGVQYXJhbGxlbCgpCit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisK
KyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpID09IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFN0cmluZyBmaWxlRXh0ID0gZmlsZW5hbWVFeHRlbnNpb24oKTsK
KyAgICBpZiAoZmlsZUV4dCA9PSAiaWNvIiB8fCBmaWxlRXh0ID09ICJnaWYiKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoc2l6ZSgpLmFyZWEoKSA8IHNfcmVzb2x1dGlvblRocmVzaG9s
ZEZvclBhcmFsbGVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZUlzQ29tcGxldGUoKQoreworICAgIEFT
U0VSVChtX2RlY29kZXIpOworICAgIEltYWdlRnJhbWUqIGltYWdlRnJhbWUgPSAwOworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIGltYWdlRnJhbWUgPSBtX2RlY29kZXItPmZp
cnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZSAmJiBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KGltYWdlRnJhbWUpOworfQorCit2b2lkIEltYWdlU291cmNl
OjpwYXJhbGxlbERlY29kZSgpCit7CisgICAgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQo
KTsKKyAgICBtX3BhcmFsbGVsRGVjb2Rlci0+ZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OmRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCit7Cisg
ICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0
SW5kZXgoMCwgaW1hZ2VGcmFtZURhdGEsIHRydWUpOworCisgICAgaWYgKGltYWdlRnJhbWVEYXRh
Lm1faXNDb21wbGV0ZSkKKyAgICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKQoreworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyID0gYWRvcHRS
ZWYobmV3IFBhcmFsbGVsSW1hZ2VEZWNvZGVyKHRoaXMsIG1fZGVjb2RlcikpOworfQorCit2b2lk
IEltYWdlU291cmNlOjpjbGVhclBhcmFsbGVsRGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fb2Jz
ZXJ2ZXIpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9wYXJh
bGxlbERlY29kZXIuY2xlYXIoKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnNl
cmlhbERlY29kZShzaXplX3QgaW5kZXgpCit7CisgICAgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5j
ZWxlZCA9IGZhbHNlOworICAgIC8vIFJlbmRlckltYWdlIGFuZCBDYW52YXNFbGVtZW50IGNhbiBz
aGFyZSB0aGUgc2FtZSBDYWNoZWRJbWFnZS4KKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgICAgICBjbGVhclBhcmFsbGVs
RGVjb2RlcigpOworICAgICAgICBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IHRydWU7CisgICAg
fQorCiAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgs
IGltYWdlRnJhbWVEYXRhKTsKKworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2Vy
dmVyLT5kaWRSZWNlaXZlRnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSwgZmFsc2Ug
LyogcmV0YWluZWRNb2RlICovLCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCk7CisKKyAgICByZXR1
cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogeworICAgIEFTU0VSVCghbV9wYXJhbGxlbERl
Y29kZXIpOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKaW5kZXggN2I5YzAyMDU2NTFjMmE5ZTE4NTYzNzU0NWVkNDM4M2JiZGIwNWUwYy4uZjA0ZDcz
NDcyNTkzZTgwODA1YjBiYjlmZjc0MmMwYTA3M2I5NjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yOSw2ICsyOSw5IEBACiAjZGVm
aW5lIEltYWdlU291cmNlX2gKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpZiAh
VVNFKENHKQorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIKKyNlbmRp
ZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KQEAgLTY1LDYgKzY4LDkgQEAgY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIGNsYXNzIEltYWdl
U291cmNlT2JzZXJ2ZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CisjaWYgIVVT
RShDRykKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOworI2VuZGlmCiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKICNpZiBVU0UoQ0cpCkBAIC0xNDMsNyArMTQ5LDExIEBAIGNvbnN0IGludCBjQW5p
bWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAt
MTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi1jbGFzcyBJbWFnZVNvdXJjZSB7
CitjbGFzcyBJbWFnZVNvdXJjZQorI2lmICFVU0UoQ0cpCisgICAgOiBwdWJsaWMgUGFyYWxsZWxJ
bWFnZURlY29kZXJPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VTb3VyY2UpOwogcHVibGljOgogICAgIGVudW0gQWxwaGFPcHRpb24gewpAQCAtMjEwLDE3
ICsyMjAsMjQgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKIAot
ICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigp
IHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gTk9URTogQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICB2b2lkIHJlcXVlc3RGcmFtZUF0
SW5kZXgoc2l6ZV90KTsKLSAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90KTsKKyAgICAvLyBOT1RFOiBJZiBJbWFnZVNvdXJjZSBoYXMgSW1hZ2VTb3VyY2VPYnNlcnZl
ciwgdGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlc3VsdCB2aWEgZGlkRGVjb2RlKCkuCisgICAgLy8g
T3RoZXJ3aXNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSByZXN1bHQuIGUuZy4gR3JhcGhpY3ND
b250ZXh0M0QKKyAgICBJbWFnZUZyYW1lRGF0YSByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCwg
Ym9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQogICAg
IHN0YXRpYyB2b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhl
bHMpIHsgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KICNlbmRpZgog
CisjaWYgIVVTRShDRykKKyAgICAvLyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpOworI2VuZGlmCisK
IHByaXZhdGU6CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7
CiAjaWYgVVNFKENHKQogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCkBAIC0yMzMsOCArMjUwLDIwIEBAIHBy
aXZhdGU6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFt
ZSopIGNvbnN0OwogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIHZvaWQgY3JlYXRlUGFyYWxs
ZWxEZWNvZGVySWZOZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7Cisg
ICAgYm9vbCBzaG91bGREZWNvZGVQYXJhbGxlbCgpOworICAgIGJvb2wgZmlyc3RGcmFtZUlzQ29t
cGxldGUoKTsKKyAgICB2b2lkIHBhcmFsbGVsRGVjb2RlKCk7CisgICAgSW1hZ2VGcmFtZURhdGEg
c2VyaWFsRGVjb2RlKHNpemVfdCk7CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBt
X2RlY29kZXI7CiAgICAgSW1hZ2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKKwogICAgIEFs
cGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
bV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCmluZGV4IDcyYWY3MDhjN2VjZDExZjgxNmU4YThlMDI3
MjkwMjYwNjA4MjE0MjguLmQzMjA3ODJkOGU4MzBjMDRlOTlmMDFlMTQzZmQyOWE5NGE4MzIwZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZU9ic2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSW1hZ2VGcmFtZURhdGE7CiAv
LyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIEltYWdlU291
cmNlLCBpbmNsdWRpbmcgZGVjb2RpbmcuCiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNv
bnN0IEltYWdlRnJhbWVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJh
bWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0g
ZmFsc2UsIGJvb2wgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSkgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW1hZ2VTb3VyY2VPYnNlcnZlcigpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiOWNmYWY1NTMxMTM3ODQ1MGQzMzE0NjQyZWQxYzg4MzY5NDdh
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rlci5oIgor
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFBhcmFsbGVsRnJhbWVEYXRhOwordm9pZCBkaWREZWNvZGVUYXNrQ2FsbGJhY2so
UGFyYWxsZWxGcmFtZURhdGEqKTsKK3N0YXRpYyBJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFnZUZy
YW1lRGF0YShQYXJhbGxlbEZyYW1lRGF0YSopOworCitQYXJhbGxlbEltYWdlRGVjb2Rlcjo6UGFy
YWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciogb2JzZXJ2ZXIs
IEltYWdlRGVjb2RlciogZGVjb2RlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAg
LCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQorICAgICwgbV9ieXRlc09mRGF0YUNvbnN1bWVk
KDApCisgICAgLCBtX2ltYWdlRGVjb2RlcigwKQoreworICAgIGluaXRpYWxpemUoZGVjb2Rlcik7
Cit9CisKK1BhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29kZXIoKQorewor
ICAgIEFTU0VSVCghdmFsaWQoKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6Omlu
aXRpYWxpemUoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGRlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpICYmICFkZWNvZGVy
LT5zaXplKCkuaXNFbXB0eSgpKTsKKworICAgIG1fc2l6ZSA9IGRlY29kZXItPnNpemUoKTsKKyAg
ICBtX2ZpbGVuYW1lRXh0ZW5zaW9uID0gZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKKwor
ICAgIHNldERhdGEoZGVjb2Rlci0+ZGF0YSgpLCBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgp
KTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZyYW1lLnNl
dFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX2ltYWdlRGVj
b2RlciA9IGRlY29kZXI7CisgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOwor
ICAgIC8vIEFmdGVyIHRoaXMgbGluZSwgaXQgaXMgaWxsZWdhbCBmb3IgdGhlIG1haW4gdGhyZWFk
IHRvIGFjY2VzcyBtX2ltYWdlRGVjb2Rlci4KKworICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgbGFz
dCBsaW5lIGJlY2F1c2UgSW1hZ2VEZWNvZGVXb3JrZXIgZ3VhcmFudGVlcworICAgIC8vIHRoZSB2
aXNpYmlsaXR5IG9mIG1lbWJlcnMgaW4gdGhlIHRhc2sgdGhyZWFkLgorICAgIG1fZGVjb2RlV29y
a2VyID0gSW1hZ2VEZWNvZGVXb3JrZXI6OmFjcXVpcmVTaGFyZWRXb3JrZXIoKTsKK30KKwordm9p
ZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgaWYgKG1fZGVj
b2RlV29ya2VyLmdldCgpKSB7CisgICAgICAgIG1fZGVjb2RlV29ya2VyLT5pbnZhbGlkYXRlKCk7
CisgICAgICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgfQorICAgIC8vIFRoZSBtYWlu
IHRocmVhZCBjYW4gdXNlIG1faW1hZ2VEZWNvZGVyIGJlY2F1c2Ugb3RoZXIgdGhyZWFkcyBkbyBu
b3QgYWNjZXNzIG1faW1hZ2VEZWNvZGVyIGFmdGVyIHRoaXMgbGluZS4KKworICAgIG1faW1hZ2VE
ZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSwgbV9pc0FsbERhdGFSZWNlaXZlZCk7CisKKyAg
ICBtX3NpemUgPSBJbnRTaXplKCk7CisgICAgbV9maWxlbmFtZUV4dGVuc2lvbiA9ICIiOworCisg
ICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIG1fZGF0YS5jbGVhcigpOworICAg
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2ltYWdlRnJhbWUgPSBJbWFnZUZy
YW1lKCk7CisKKyAgICBpZiAobV9kYXRhRm9yVGFzay5nZXQoKSkKKyAgICAgICAgbV9kYXRhRm9y
VGFzay5jbGVhcigpOworCisgICAgbV9pbWFnZURlY29kZXIgPSAwOworfQorCit2b2lkIFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lzQWxsRGF0
YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOworICAgIG1fZGF0YSA9IGRhdGE7Cit9CisKK3Zv
aWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50ID0g
ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7CisgICAgaWYgKCFzZWdtZW50LmdldCgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9kZWNvZGVXb3JrZXItPnBvc3RUYXNrKGJpbmQoJlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrLCB0aGlzLCBzZWdtZW50LnJlbGVhc2UoKSkpOworfQorCitQ
YXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ+IFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpleHRyYWN0U2VnbWVudEZvclRhc2soKQoreworICAgIEFTU0VSVCht
X2J5dGVzT2ZEYXRhQ29uc3VtZWQgPj0gMCAmJiBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPD0gbV9k
YXRhLT5zaXplKCkpOworCisgICAgaW50IHNpemVPZlNlZ21lbnQgPSBtX2RhdGEtPnNpemUoKSAt
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBpZiAoIXNpemVPZlNlZ21lbnQpCisgICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4oKTsKKworICAgIE93blB0cjxF
bmNvZGVkRGF0YVNlZ21lbnQ+IHNlZ21lbnQoYWRvcHRQdHIobmV3IEVuY29kZWREYXRhU2VnbWVu
dCgpKSk7CisgICAgY29uc3QgY2hhciogc3JjUHRyID0gbV9kYXRhLT5kYXRhKCkgKyBtX2J5dGVz
T2ZEYXRhQ29uc3VtZWQ7CisgICAgc2VnbWVudC0+bV9zZWdtZW50LmFwcGVuZChzcmNQdHIsIHNp
emVPZlNlZ21lbnQpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IG1fZGF0YS0+c2l6ZSgp
OworCisgICAgc2VnbWVudC0+bV9pc0FsbERhdGFSZWNlaXZlZCA9IG1faXNBbGxEYXRhUmVjZWl2
ZWQ7CisKKyAgICByZXR1cm4gc2VnbWVudC5yZWxlYXNlKCk7Cit9CisKK3N0cnVjdCBQYXJhbGxl
bEZyYW1lRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyYWxsZWxGcmFtZURhdGEp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFBh
cmFsbGVsRnJhbWVEYXRhKFBhc3NSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IHBhcmFsbGVs
RGVjb2RlcikKKyAgICAgICAgOiBtX3BhcmFsbGVsRGVjb2RlcihwYXJhbGxlbERlY29kZXIpCisg
ICAgICAgICwgbV9kZWNvZGVkU2VnbWVudCgpCisgICAgICAgICwgbV9zdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAgICAgICAsIG1f
cHJlbXVsdGlwbHlBbHBoYSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB+UGFyYWxsZWxGcmFt
ZURhdGEoKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworICAgIE93bkFycmF5UHRyPEltYWdlRnJhbWU6OlBpeGVsRGF0
YT4gbV9kZWNvZGVkU2VnbWVudDsKKyAgICBJbWFnZUZyYW1lOjpGcmFtZVN0YXR1cyBtX3N0YXR1
czsKKyAgICBib29sIG1faGFzQWxwaGE7CisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7Cisg
ICAgSW50UmVjdCBtX2RlY29kZWRSZWN0OworfTsKKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6ZGVjb2RlVGFzayhQYXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0
YVNlZ21lbnQ+IHBhc3NTZWdtZW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdt
ZW50PiBzZWdtZW50ID0gcGFzc1NlZ21lbnQ7CisKKyAgICAvLyAxLiBTZW5kIHNlZ21lbnQgZGF0
YSB0byBJbWFnZURlY29kZXIuCisgICAgaWYgKCFtX2RhdGFGb3JUYXNrKSB7CisgICAgICAgIG1f
ZGF0YUZvclRhc2sgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgLy8gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBkb2VzIG5vdCBhbGxvdyB0d28gdGhy
ZWFkcyB0byBhY2Nlc3Mgb25lIFJlZkNvdW50ZWQgb2JqZWN0LgorICAgICAgICAvLyBtX2RhdGFG
b3JUYXNrIGlzIHVzZWQgYnkgYm90aCB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSB0YXNrIHRocmVh
ZDoKKyAgICAgICAgLy8gVGhlIHRhc2sgdGhyZWFkIGNyZWF0ZXMsIHVzZXMgYW5kIHJlbW92ZXMg
bV9kYXRhRm9yVGFzay4gVGhlIG1haW4gdGhyZWFkIG1heSByZW1vdmUKKyAgICAgICAgLy8gbV9k
YXRhRm9yVGFzayBpZiB0aGUgdGFzayB0aHJlYWQgY291bGQgbm90IHJlbW92ZSBtX2RhdGFGb3JU
YXNrLgorICAgICAgICAvLworICAgICAgICAvLyBQYXJhbGxlbCBpbWFnZSBkZWNvZGVycyBtYW5h
Z2UgbV9kYXRhRm9yVGFzayBpbiBhIHRocmVhZC1zYWZlIHdheS4gSG93ZXZlciwKKyAgICAgICAg
Ly8gd2UgY2FuJ3QgdGVsbCB0aGUgdmVyaWZpZXIgdGhhdCB3ZSBhcmUgc2FmZSBieSBzaW1wbHkg
cGFzc2luZyBhIG11dGV4CisgICAgICAgIC8vIGJlY2F1c2UgbGliZGlzcGF0Y2ggZG9lcyBub3Qg
ZXZlbiBndWFyYW50ZWUgZGVjb2RlVGFzayBpcyBjYWxsZWQgYnkgdGhlIHNhbWUgdGhyZWFkCisg
ICAgICAgIC8vIGVhY2ggdGltZS4gU28gdHVybiBvZmYgdGhlIHZlcmlmaWVyIGhlcmUuCisgICAg
ICAgIG1fZGF0YUZvclRhc2stPnR1cm5PZmZWZXJpZmllcigpOworI2VuZGlmCisgICAgfQorICAg
IG1fZGF0YUZvclRhc2stPmFwcGVuZChzZWdtZW50LT5tX3NlZ21lbnQpOworICAgIG1faW1hZ2VE
ZWNvZGVyLT5zZXREYXRhKG1fZGF0YUZvclRhc2suZ2V0KCksIHNlZ21lbnQtPm1faXNBbGxEYXRh
UmVjZWl2ZWQpOworCisgICAgSW1hZ2VGcmFtZSogb2xkQnVmZmVyID0gbV9pbWFnZURlY29kZXIt
PmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICBpbnQgbGFzdERlY29kZWRSb3cg
PSBvbGRCdWZmZXIgPyBvbGRCdWZmZXItPmxhc3REZWNvZGVkUm93KCkgOiAwOworCisgICAgLy8g
Mi4gRGVjb2RlIGFuIGltYWdlIGluY3JlbWVudGFsbHkuCisgICAgSW1hZ2VGcmFtZSogYnVmZmVy
ID0gbV9pbWFnZURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKKyAgICAg
ICAgQVNTRVJUKCFzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIDMuIE1ha2UgYSBQYXJhbGxlbEZyYW1lRGF0YSBpbiBvcmRlciB0
byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICBQYXJhbGxlbEZyYW1lRGF0YSogcGFy
YWxsZWxGcmFtZURhdGEgPSBuZXcgUGFyYWxsZWxGcmFtZURhdGEodGhpcyk7CisgICAgcGFyYWxs
ZWxGcmFtZURhdGEtPm1fc3RhdHVzID0gYnVmZmVyLT5zdGF0dXMoKTsKKyAgICBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9oYXNBbHBoYSA9IGJ1ZmZlci0+aGFzQWxwaGEoKTsKKyAgICBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9wcmVtdWx0aXBseUFscGhhID0gYnVmZmVyLT5wcmVtdWx0aXBseUFscGhhKCk7
CisKKyAgICBpbnQgbmV3TGFzdERlY29kZWRSb3cgPSBidWZmZXItPmxhc3REZWNvZGVkUm93KCk7
CisgICAgLy8gT25seSBpbiBCTVAsIGxhc3REZWNvZGVkUm93IGNhbiBiZSBiaWdnZXIgdGhhbiBu
ZXdMYXN0RGVjb2RlZFJvdy4KKyAgICBpbnQgbGFzdERlY29kZWRNaW5Sb3cgPSBzdGQ6Om1pbihs
YXN0RGVjb2RlZFJvdywgbmV3TGFzdERlY29kZWRSb3cpOworICAgIGludCBsYXN0RGVjb2RlZE1h
eFJvdyA9IHN0ZDo6bWF4KGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAg
cGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFJlY3QgPSBJbnRSZWN0KDAsIGxhc3REZWNvZGVk
TWluUm93LCBtX2ltYWdlRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGxhc3REZWNvZGVkTWF4Um93
IC0gbGFzdERlY29kZWRNaW5Sb3cgKyAxKTsKKworICAgIC8vIDQuIENyZWF0ZSBkZWNvZGVkIHNl
Z21lbnQgZGF0YSBpbiBvcmRlciB0byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICAv
LyAgICBJZiB0aGUgc3RhdHVzIGlzIEZyYW1lQ29tcGxldGUsIHRoaXMgaXMgbm90IG5lZWRlZCBi
ZWNhdXNlIGEgTmF0aXZlSW1hZ2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZSBkZWNvZGVyIG9u
IHRoZSBtYWluIHRocmVhZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzID09
IEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCkgeworICAgICAgICBpbnQgc2VnbWVudFNpemUgPSBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAgICAgICBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2VnbWVudCA9IGFkb3B0QXJyYXlQdHIobmV3IElt
YWdlRnJhbWU6OlBpeGVsRGF0YVtzZWdtZW50U2l6ZV0pOworCisgICAgICAgIEltYWdlRnJhbWU6
OlBpeGVsRGF0YSogc2VnbWVudEFkZHIgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2Vn
bWVudC5nZXQoKTsKKyAgICAgICAgbWVtY3B5KHNlZ21lbnRBZGRyLCBidWZmZXItPmdldEFkZHIo
MCwgbGFzdERlY29kZWRNaW5Sb3cpLCBzZWdtZW50U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQ
aXhlbERhdGEpKTsKKyAgICB9IGVsc2UgeyAvLyBGcmFtZUNvbXBsZXRlCisgICAgICAgIG1faW1h
Z2VEZWNvZGVyLT5zZXREYXRhKDAsIGZhbHNlKTsKKyAgICAgICAgbV9kYXRhRm9yVGFzay5jbGVh
cigpOworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZChkaWREZWNvZGVUYXNrQ2Fs
bGJhY2ssIHBhcmFsbGVsRnJhbWVEYXRhKSk7Cit9CisKK3ZvaWQgZGlkRGVjb2RlVGFza0NhbGxi
YWNrKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIC8vIElmIGEgY2xpZW50IGNhbGxlZCBQYXJhbGxlbEltYWdl
RGVjb2Rlcjo6Y2xlYXIoKSwgUGFyYWxsZWxJbWFnZURlY29kZXIgaXMgaW52YWxpZGF0ZWQuCisg
ICAgaWYgKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3BhcmFsbGVsRGVjb2Rlci0+dmFsaWQoKSkKKyAg
ICAgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT5kaWREZWNvZGVUYXNr
KHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBkZWxldGUgcGFyYWxsZWxGcmFtZURhdGE7Cit9CisK
K0ltYWdlRnJhbWVEYXRhIGNyZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKiBw
YXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YTsK
KyAgICBpbWFnZUZyYW1lRGF0YS5tX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b247CisgICAgaW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlID0gcGFyYWxsZWxGcmFtZURhdGEt
Pm1fc3RhdHVzID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgaW1hZ2VGcmFtZURh
dGEubV9oYXNBbHBoYSA9ICFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgfHwgcGFyYWxsZWxG
cmFtZURhdGEtPm1faGFzQWxwaGE7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOworfQorCit2
b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkaWREZWNvZGVUYXNrKFBhcmFsbGVsRnJhbWVEYXRh
KiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgIT0gSW1hZ2VGcmFtZTo6RnJhbWVF
bXB0eSk7CisKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUltYWdl
RnJhbWVEYXRhKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGlmICghaW1hZ2VGcmFtZURhdGEu
bV9pc0NvbXBsZXRlKQorICAgICAgICBkaWREZWNvZGVQYXJ0aWFsKGltYWdlRnJhbWVEYXRhLCBw
YXJhbGxlbEZyYW1lRGF0YSk7CisgICAgZWxzZQorICAgICAgICBkaWREZWNvZGVDb21wbGV0ZShp
bWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29k
ZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhLCBQYXJhbGxlbEZyYW1lRGF0
YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAg
ICBzeW5jSW1hZ2VGcmFtZShwYXJhbGxlbEZyYW1lRGF0YSk7CisKKyAgICBpbWFnZUZyYW1lRGF0
YS5tX2ZyYW1lID0gbV9pbWFnZUZyYW1lLmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2Vy
dmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjphcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSog
cGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgY29uc3QgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBj
b25zdCBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50Lmdl
dCgpOworICAgIGludCBzZWdtZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRS
ZWN0LnNpemUoKS5hcmVhKCk7CisgICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0QWRkciA9
IG1faW1hZ2VGcmFtZS5nZXRBZGRyKDAsIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0
LnkoKSk7CisgICAgbWVtY3B5KGRlc3RBZGRyLCBzZWdtZW50QWRkciwgc2VnbWVudFNpemUgKiBz
aXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURl
Y29kZXI6OnN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0
YSkKK3sKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIGEg
dmFsaWQgbmF0aXZlIGltYWdlIGluIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKS4KKyAg
ICBtX2ltYWdlRnJhbWUuc2V0U3RhdHVzKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyk7Cisg
ICAgbV9pbWFnZUZyYW1lLnNldEhhc0FscGhhKHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhh
KTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShwYXJhbGxlbEZyYW1lRGF0
YS0+bV9wcmVtdWx0aXBseUFscGhhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6
ZGlkRGVjb2RlQ29tcGxldGUoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2RlY29kZVdvcmtlci0+aW52YWxpZGF0
ZSgpOworICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgLy8gVGhlIG1haW4gdGhyZWFk
IGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0aHJlYWRzIGRvIG5vdCBhY2Nl
c3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gbV9pbWFnZURlY29kZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAg
ICBBU1NFUlQoYnVmZmVyKTsKKworICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBidWZmZXIt
PmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2VydmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFt
ZURhdGEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmYwYTM4YWI3ODMwYmU0
N2ZiZjAxOWY3NzAyZmQwMzJkNTc4ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVjb2Rlcl9oCisjZGVm
aW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkltYWdlRGVjb2RlV29ya2Vy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZUZyYW1lRGF0YTsKK2NsYXNzIFBhcmFsbGVsRnJh
bWVEYXRhOworCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQYXJhbGxlbEltYWdlRGVjb2Rlcj4geworcHVibGljOgorICAgIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyKFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIqLCBJbWFnZURlY29kZXIq
KTsKKyAgICB+UGFyYWxsZWxJbWFnZURlY29kZXIoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgp
OworCisgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKworICAgIHZvaWQgZGVjb2RlKCk7CisKKyAgICBpbmxpbmUgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZUV4dGVuc2lvbjsgfQorICAgIGlubGlu
ZSBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIGluaXRpYWxpemUoSW1hZ2VEZWNvZGVyKik7CisKKyAgICBpbmxpbmUgYm9vbCB2YWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZWNvZGVyOyB9CisKKyAgICBzdHJ1Y3QgRW5jb2Rl
ZERhdGFTZWdtZW50IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5jb2RlZERhdGFT
ZWdtZW50KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBFbmNvZGVkRGF0YVNlZ21lbnQoKSB7IH0KKyAgICAgICAgVmVjdG9yPGNoYXI+IG1f
c2VnbWVudDsKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOworICAgIH07CisKKyAg
ICBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7
CisKKyAgICAvLyBPbmx5IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdGFzayB0aHJlYWQu
CisgICAgdm9pZCBkZWNvZGVUYXNrKFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50Pik7CisK
KyAgICB2b2lkIGRpZERlY29kZVRhc2soUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2b2lkIGRp
ZERlY29kZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmLCBQYXJhbGxlbEZyYW1lRGF0YSopOworICAg
IHZvaWQgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsK
KyAgICB2b2lkIHN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKik7CisgICAgdm9pZCBk
aWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYpOworICAgIGZyaWVuZCB2b2lkIGRpZERl
Y29kZVRhc2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworCisgICAgUGFyYWxsZWxJbWFn
ZURlY29kZXJPYnNlcnZlciogbV9vYnNlcnZlcjsKKworICAgIEludFNpemUgbV9zaXplOworICAg
IFN0cmluZyBtX2ZpbGVuYW1lRXh0ZW5zaW9uOworCisgICAgLy8gRm9yIGlucHV0IGRhdGEKKyAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIGludCBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7CisKKyAgICAvLyBGb3Igb3V0cHV0
IGRhdGEKKyAgICBJbWFnZUZyYW1lIG1faW1hZ2VGcmFtZTsKKworICAgIC8vIFRoZSB0YXNrIHRo
cmVhZCBjYW4gYWNjZXNzIG9ubHkgbV9kYXRhRm9yVGFzayBhbmQgbV9pbWFnZURlY29kZXIuCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhRm9yVGFzazsKKworICAgIEltYWdlRGVjb2Rl
ciogbV9pbWFnZURlY29kZXI7CisKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+IG1fZGVj
b2RlV29ya2VyOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxs
ZWxJbWFnZURlY29kZXJPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhN2UxOTcwNWUxZTI5YzVmMzlh
ZGJkY2JlOTc3NzhhMTgxZDhlNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlcl9oCisjZGVmaW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXJfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworCisvLyBJbnRlcmZhY2UgZm9y
IG5vdGlmaWNhdGlvbiBhYm91dCBkZWNvZGluZyBjb21wbGV0aW9uIG9mIGFuIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyLgorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpID0gMDsK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIo
KSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDliYWI2NjU1N2UxZjcxNDI4NzEwZDM1ZTg1OGY1OTNiZThkZGRiYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1h
cEltYWdlLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgorCisjaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlPiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKEJp
dG1hcEltYWdlKiBiaXRtYXBJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlKGJpdG1hcEltYWdlKSk7Cit9CisKK1JldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2Up
CisgICAgOiBtX2JpdG1hcEltYWdlKGJpdG1hcEltYWdlKQorICAgICwgbV9yZXRhaW5lZE1vZGVD
b3VudCgwKQoreworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRN
b2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCk7Cit9CisKK0ludFNpemUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMp
OworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zaXplKCk7Cit9CisKK2Jvb2wgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAg
IFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBt
X2JpdG1hcEltYWdlLT5nZXRIb3RTcG90KHBvaW50KTsKK30KKworYm9vbCBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPmRhdGFDaGFuZ2VkKGFsbERhdGFSZWNlaXZlZCk7Cit9CisKK1N0cmluZyBSZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2Jp
dG1hcEltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1h
Z2UtPmRlc3Ryb3lEZWNvZGVkRGF0YShkZXN0cm95QWxsKTsKK30KKwordW5zaWduZWQgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRTaXplKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1v
ZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rh
cnRBbmltYXRpb24oYm9vbCBjYXRjaFVwSWZOZWNlc3NhcnkpCit7CisgICAgUmV0YWluZWRNb2Rl
U2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RhcnRB
bmltYXRpb24oY2F0Y2hVcElmTmVjZXNzYXJ5KTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRt
YXBJbWFnZTo6c3RvcEFuaW1hdGlvbigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWlu
ZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RvcEFuaW1hdGlvbigpOwor
fQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRt
YXBJbWFnZS0+cmVzZXRBbmltYXRpb24oKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAgICBSZXRh
aW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRt
YXBJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKworYm9vbCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoKQoreworICAgIFJldGFpbmVk
TW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcElt
YWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+Y3Vy
cmVudEZyYW1lSXNDb21wbGV0ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1v
ZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5kcmF3KGNvbnRleHQsIGRzdFJlY3Qs
IHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworfQorCitib29sIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3IoKQoreworICAgIFJldGFpbmVkTW9kZVNh
dmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5t
YXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsKK30KKworQ29sb3IgUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6OnNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVk
TW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zb2xpZENvbG9yKCk7
Cit9CisKK1JldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZlcihjb25zdCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZSogaW1hZ2UsIGJvb2wgcmV0YWluZWQpCisgICAgOiBtX2ltYWdlKGlt
YWdlKQorICAgICwgbV9yZXRhaW5lZChyZXRhaW5lZCkKK3sKKyAgICBpZiAobV9yZXRhaW5lZCkK
KyAgICAgICAgbV9pbWFnZS0+YmVnaW5SZXRhaW5lZE1vZGUoKTsKK30KKworUmV0YWluZWRNb2Rl
U2F2ZXI6On5SZXRhaW5lZE1vZGVTYXZlcigpCit7CisgICAgaWYgKG1fcmV0YWluZWQpCisgICAg
ICAgIG1faW1hZ2UtPmVuZFJldGFpbmVkTW9kZSgpOworfQorCitSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSogaW1hZ2UpCit7CisgICAgQVNT
RVJUKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpOworCisgICAgQml0bWFwSW1hZ2UqIGJpdG1hcElt
YWdlID0gc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSk7CisgICAgaWYgKCFiaXRtYXBJ
bWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQoKSkKKyAgICAgICAgYml0bWFwSW1hZ2UtPm1f
cmV0YWluZWRNb2RlSW1hZ2UgPSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKGJpdG1h
cEltYWdlKTsKKworICAgIHJldHVybiBiaXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5n
ZXQoKTsKK30KKworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKElt
YWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2UpOworICAgIHJl
dHVybiBpbWFnZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlN2E4
YzM4NTU3MzBjZTljOTlhZTE5ZjEzODA5ZGFmY2Y4NTdlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlX2gKKyNkZWZpbmUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsK
K2NsYXNzIFJldGFpbmVkTW9kZVNhdmVyOworCitjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgZnJpZW5kIGNsYXNzIFJldGFpbmVkTW9kZVNhdmVyOwor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBj
cmVhdGUoQml0bWFwSW1hZ2UqKTsKKworICAgIHZpcnR1YWwgflJldGFpbmVkTW9kZUJpdG1hcElt
YWdlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBkYXRh
Q2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVk
U2l6ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJvb2wgY2F0
Y2hVcElmTmVjZXNzYXJ5ID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lSGFzQWxwaGEoKTsKKworICAgIGJvb2wgY3VycmVudEZyYW1lSXNDb21w
bGV0ZSgpOworCisgICAgaW5saW5lIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXRhaW5lZE1vZGVDb3VudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9y
KCk7CisgICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoQml0bWFwSW1hZ2UqKTsKKworICAg
IGlubGluZSB2b2lkIGJlZ2luUmV0YWluZWRNb2RlKCkgY29uc3QgeyBtX3JldGFpbmVkTW9kZUNv
dW50Kys7IH0KKyAgICBpbmxpbmUgdm9pZCBlbmRSZXRhaW5lZE1vZGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgbV9yZXRhaW5lZE1vZGVDb3VudC0tOworICAgICAgICBBU1NFUlQobV9yZXRhaW5l
ZE1vZGVDb3VudCA+PSAwKTsKKyAgICB9CisKKyAgICBCaXRtYXBJbWFnZSogbV9iaXRtYXBJbWFn
ZTsKKyAgICBtdXRhYmxlIGludCBtX3JldGFpbmVkTW9kZUNvdW50OworfTsKKworY2xhc3MgUmV0
YWluZWRNb2RlU2F2ZXIgeworcHVibGljOgorICAgIFJldGFpbmVkTW9kZVNhdmVyKGNvbnN0IFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlKiwgYm9vbCByZXRhaW5lZCA9IHRydWUpOworICAgIH5SZXRh
aW5lZE1vZGVTYXZlcigpOworCitwcml2YXRlOgorICAgIGNvbnN0IFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlKiBtX2ltYWdlOworICAgIGJvb2wgbV9yZXRhaW5lZDsKK307CisKKworUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKK0ltYWdl
KiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBkYzZhNGQ0YmNiNzJjNmFlNzM0ZmU3Mzlh
OGM0Y2U3ZDU2NDE1ZjQ3Li5kMDZiMWY3N2JmZGE1OTM0YmVkNzZjZTE5Mjk3MGEyYzRjMjgxMjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRt
YXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNTgsNiArNTgsNyBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZhaWxhYmxl
KHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lzQ2FjaGluZ0Zy
YW1lKGZhbHNlKQogewogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdl
LT5zdXJmYWNlKCk7CiAgICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lk
dGgoc3VyZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IDI1NDJj
ZjhmYTkxZDBiOGE3MTQzODVhNGUzMDIzOTY3ODNkOTYxZGQuLmI3NDI1YTllODE2ZmIzYmVlZGIz
MmUwMDdkN2QyYjhkMzE1MTJkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
CkBAIC0xNjUsNyArMTY1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRh
KEltYWdlKiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAgZGVj
b2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZy
YW1lRGF0YSBpbWFnZUltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgo
MCk7CisgICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVy
LnJlcXVlc3RGcmFtZUF0SW5kZXgoMCk7CiAgICAgICAgIGlmICghaW1hZ2VJbWFnZUZyYW1lRGF0
YS5tX2lzQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIE93blB0
cjxOYXRpdmVJbWFnZUNhaXJvPiBuYXRpdmVJbWFnZSA9IGFkb3B0UHRyKGltYWdlSW1hZ2VGcmFt
ZURhdGEubV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDc4MGJhNDRkODQxYTYw
MDk5Mzk4OGRhMjMxNDYzMDgyOWQ0MzM5M2QuLjM4N2YxZWY1MmVkZTkxMzhhNDBhZGRkYzlmNmQ1
Nzg3NTZjODUyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAg
ICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRl
Y29kZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJ
bWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4
KDApOworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVx
dWVzdEZyYW1lQXRJbmRleCgwKTsKICAgICAgICAgZGVjb2RlZEltYWdlLmFkb3B0Q0YoaW1hZ2VG
cmFtZURhdGEubV9mcmFtZSk7CiAgICAgICAgIGNnSW1hZ2UgPSBkZWNvZGVkSW1hZ2UuZ2V0KCk7
CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwCmluZGV4IGM4NWJlNDY3MGViMmE3Yzc5YzI1YTAyMDk4MjVhZTBlZDQwOGRjYjku
LjFhN2NhZmM4M2U1NTBmOTQ5NDU5NGQ1ZGMyMzU5YTdlMTM2Mzg2ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCkBAIC04MSw2ICs4MSw3
IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZh
aWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lzQ2Fj
aGluZ0ZyYW1lKGZhbHNlKQogewogICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgo
Y2dJbWFnZSk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcAppbmRleCA2MGJhM2M5NGI2MzgwMTA1ODA2ZWZlNzE4NTVkM2E0YjQzYjM3NjYy
Li4yNGQ3MDIzMmVmZDI5ZjYzOGRhNGEwOWE0Njc1YzdlZTdlOGEyNzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRl
ICJJbWFnZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTMwOSwxMSArMzEwLDEyIEBA
IHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVj
b2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDogMDsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZUZyYW1l
RGF0YSBJbWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGJvb2wp
CiB7CiAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOwogICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJh
bWVEYXRhID0gY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBtX29ic2VydmVyLT5kaWRS
ZWNlaXZlRnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSk7CisgICAgcmV0dXJuIGlt
YWdlRnJhbWVEYXRhOwogfQogCiBJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCmluZGV4IGNkODc5NGU1MzljZmQ1
MGVlODhhNzdlMDdjNDVmODJhYjljZDczNTMuLjkwMDBmYzNkZmI1YjMwOWNkYWZhYTk5NzEyNWI3
Yjk2MzVlZjNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW52Zy9JbWFnZU9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcApAQCAtNjcsNiArNjcsNyBAQCBCaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoVGlsZWRJbWFnZU9wZW5WRyogdGlsZWRJbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGFzVW5p
Zm9ybUZyYW1lU2l6ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwg
bV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9zaXplLndpZHRoKCkgPiAw
KTsKICAgICBBU1NFUlQobV9zaXplLmhlaWdodCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGZjYTc1OTA1ZjVkYzNkNDI2
OTZlYzg5NTBlYzUxZTNmZTc3ZDBiM2QuLmNhZjY2MDZhODE2OThmYWQ1MTk3ZGM5MzI5ZjllMGI0
Nzk2ZTkwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwCkBAIC0yMDksNiArMjA5LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFQ
aXhtYXAqIHBpeG1hcCwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVTaXpl
KHRydWUpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291
bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAgICAgaW50IHdpZHRo
ID0gcGl4bWFwLT53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBwaXhtYXAtPmhlaWdodCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCmluZGV4IGY1NmQ3MjQ1YWQxMGVjM2FlODViZWQ0
MjcwOWU2ZjZiNDcyYjJjNTAuLjFmMDQ1OWM1NGFjNTA1ZmM3MmJkM2NiMDg2ZWFlZTI2ODhhNWUy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3Jh
cGhpY3NDb250ZXh0M0RTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAg
ZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFn
ZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDAp
OworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVxdWVz
dEZyYW1lQXRJbmRleCgwKTsKICAgICAgICAgaWYgKCFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxl
dGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhhID0gaW1hZ2VG
cmFtZURhdGEubV9oYXNBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvSW1hZ2VXeC5jcHAKaW5kZXggYjdjMjQ5NmM3M2I1MjY1ZjFkODUzNGUzMzdlZThjMjBm
ZTMwMjk4OS4uYjRiNTdiZTliYTM0MzA1ZDM0OWZiZjRjNGU1YjQ3Njc1ZmI4MzE0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKQEAgLTk1
LDYgKzk1LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNvbnN0IHd4Qml0bWFwJiBiaXRt
YXApCiAgICAgLCBtX2RlY29kZWRTaXplKDApCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7
CiAgICAgbV9kZWNvZGVkU2l6ZSA9IGJpdG1hcC5HZXRXaWR0aCgpICogYml0bWFwLkdldEhlaWdo
dCgpICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKGJpdG1hcC5HZXRXaWR0aCgpLCBiaXRtYXAu
R2V0SGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzJiNWRkYzJkZTMxZDAwNDA3MjdkNDRl
OTUxNjJhZGY2YmFjNzZjNy4uOTA0Zjg2Njg2MzMyZGE4YzMyNmRkMGY2ZWI1N2JiNDU1Njc3NWQ4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCkBAIC0xNDAsNiArMTQwLDcgQEAgSW1hZ2VEZWNvZGVyKiBJbWFn
ZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpB
bHBoYU8KIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCiAgICAgOiBtX2hhc0FscGhhKGZhbHNl
KQorICAgICwgbV9sYXN0RGVjb2RlZFJvdygwKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkK
ICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNw
ZWNpZmllZCkKQEAgLTE2NSw2ICsxNjYsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxE
YXRhKCkKIHsKICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwogICAgIG1fYnl0ZXMgPSAwOwor
ICAgIG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAg
ICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoKSBjYWxscyB0aGlzCiAgICAgLy8gdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1
dCBvdGhlciBmdW5jdGlvbnMgbGlrZSBpbml0RnJhbWVCdWZmZXIoKSBhbmQKQEAgLTE4Nyw2ICsx
ODksNyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUm
IG90aGVyKQogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXpl
ID0gb3RoZXIubV9zaXplOwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOworICAg
IG1fbGFzdERlY29kZWRSb3cgPSBvdGhlci5tX2xhc3REZWNvZGVkUm93OwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGlu
dCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKICAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUoYmFj
a2luZ1N0b3JlU2l6ZSk7CiAgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKICAg
ICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIG1fbGFzdERlY29k
ZWRSb3cgPSAwOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggNzYwYWM5M2Y4NTc1MDNhZjE4NzY3M2U3NGQ2MDFkMmYyODU4N2YzNC4u
NDY2ZmMxYTY0NzZkODA2YTUwM2U3OTdiM2QyNmMyMDBmNDkzODNmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAg
LTExOCw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5hdGl2ZUltYWdl
UHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc0FscGhhKCkg
Y29uc3Q7CisgICAgICAgIGludCBsYXN0RGVjb2RlZFJvdygpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dERlY29kZWRSb3c7IH0KICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CiAgICAgICAgIEZyYW1lU3Rh
dHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVk
IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQpAQCAtMTI1LDYgKzEyNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRI
YXNBbHBoYShib29sIGFscGhhKTsKKyAgICAgICAgaW5saW5lIHZvaWQgc2V0TGFzdERlY29kZWRS
b3coaW50IGxhc3REZWNvZGVkUm93KSB7IG1fbGFzdERlY29kZWRSb3cgPSBsYXN0RGVjb2RlZFJv
dzsgfQogICAgICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmKTsK
ICAgICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByKSB7IG1f
b3JpZ2luYWxGcmFtZVJlY3QgPSByOyB9CiAgICAgICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3Rh
dHVzIHN0YXR1cyk7CkBAIC0xODEsNiArMTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnltb3JlPwogICAgICAg
ICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKKyAgICAgICAgaW50IG1fbGFz
dERlY29kZWRSb3c7CiAgICAgICAgIEludFJlY3QgbV9vcmlnaW5hbEZyYW1lUmVjdDsgLy8gVGhp
cyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBidWZmZXIgZXhjZXB0IGZvciBHSUYgZnJhbWVzIHdob3NlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVjdCB3YXMgc21h
bGxlciB0aGFuIHRoZQpAQCAtMjI4LDYgKzIzMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAg
IH0KIAorICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
Z2V0KCk7IH0KKwogICAgICAgICAvLyBMYXppbHktZGVjb2RlcyBlbm91Z2ggb2YgdGhlIGltYWdl
IHRvIGdldCB0aGUgc2l6ZSAoaWYgcG9zc2libGUpLgogICAgICAgICAvLyBGSVhNRTogUmlnaHQg
bm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFjdG9yIHRoZQogICAg
ICAgICAvLyBkZWNvZGUgY2FsbCBvdXQgYW5kIHVzZSBpdCBoZXJlLgpAQCAtMjc2LDYgKzI4MSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBw
b2ludGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChz
aXplX3QpID0gMDsKIAorICAgICAgICAvLyBSZXR1cm5zIGFuIEltYWdlRGVjb2Rlci1vd25lZCBw
b2ludGVyIHdpdGhvdXQgZGVjb2RpbmcgbW9yZS4KKyAgICAgICAgSW1hZ2VGcmFtZSogZmlyc3RJ
bWFnZUZyYW1lV2l0aG91dERlY29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBt
X2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpID8gMCA6ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07
CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAg
ICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBF
R0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNmE2NWU2MTdkMTllNjdiZmEyMTgwNTM4N2MxMTk1ZGE0
ODIxZGI2ZC4uYmRjYWVmMDVlYTQwMTE1ZDA2Y2Y3MzVmMDkxOWFhYzRiMjE5ZWVlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9K
UEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTcsNiArMTU3LDcg
QEAgaW50IEltYWdlUmVhZGVyOjpkZWNvZGUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBJ
bWFnZUZyYW1lKiBhRnJhbWUpCiAgICAgICAgICAgICBhRnJhbWUtPnNldFJHQkEoaSwgaiwgY3Vy
UHRyWzBdLCBjdXJQdHJbMV0sIGN1clB0clsyXSwgMjU1KTsKICAgICAgICAgICAgIGN1clB0ciAr
PSAzOwogICAgICAgICB9CisgICAgICAgIGFGcmFtZS0+c2V0TGFzdERlY29kZWRSb3coaik7CiAg
ICAgfQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAy
MGEyNDhjN2QzYmNiMTFjYWQ3YzY3Njk1ZWI4Mjc1NzUyNzgyNDkzLi5mNzRkZGUzYTBkZmZhYWI3
OWIwNWFiNDM4YmQxZmY4ZmVhMmMyNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNjQsOCArNjQsMTUgQEAgdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogYm9vbCBCTVBJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSgpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWls
YWJsZSgpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkgeworICAg
ICAgICAvLyBPbmx5IEJNUEltYWdlRGVjb2RlciBtdXN0IG1ha2UgbV9mcmFtZUJ1ZmZlckNhY2hl
WzBdIGluIGlzU2l6ZUF2YWlsYWJsZSgpLAorICAgICAgICAvLyBiZWNhdXNlIHRoZSBkZWZhdWx0
IHZhbHVlIG9mIEltYWdlRnJhbWU6Om1fbGFzdERlY29kZWRSb3cgY2FuIGJlICJoZWlnaHQgLSAx
Ii4KKyAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7CisgICAgICAgICAgICBtX2ZyYW1lQnVm
ZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7
CisgICAgICAgIH0KICAgICAgICAgZGVjb2RlKHRydWUpOworICAgIH0KIAogICAgIHJldHVybiBJ
bWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5j
cHAKaW5kZXggNWMwMDU1MzRlY2Q5MjEzNGExM2IzMjk1ODkyNzc5MGYwN2FkMGY4MS4uNGY3ZTMx
NzllNjY2MzM4YTNhMTE0YjFiMjJhMWUzNDk0ODM5NDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFk
ZXIuY3BwCkBAIC02NCw4ICs2NCwxMSBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAo
Ym9vbCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcHJvY2Vzc0lu
Zm9IZWFkZXIoKSBzZXQgdGhlIHNpemUsIHNvIGlmIHRoYXQncyBhbGwgd2UgbmVlZGVkLCB3ZSdy
ZSBkb25lLgotICAgIGlmIChvbmx5U2l6ZSkKKyAgICBpZiAob25seVNpemUpIHsKKyAgICAgICAg
aWYgKCFtX2lzVG9wRG93bikKKyAgICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJv
dyhtX3BhcmVudC0+c2l6ZSgpLmhlaWdodCgpIC0gMSk7CiAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KIAogICAgIC8vIFJlYWQgYW5kIHByb2Nlc3MgdGhlIGJpdG1hc2tzLCBpZiBuZWVkZWQu
CiAgICAgaWYgKG1fbmVlZFRvUHJvY2Vzc0JpdG1hc2tzICYmICFwcm9jZXNzQml0bWFza3MoKSkK
QEAgLTYyNCw2ICs2MjcsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzUkxFRGF0YSgp
CiAKICAgICAgICAgICAgICAgICBtX2RlY29kZWRPZmZzZXQgKz0gMjsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyhtX2Nvb3JkLnkoKSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC03MTcsNiArNzIxLDcgQEAgQk1QSW1hZ2VSZWFkZXI6OlBy
b2Nlc3NpbmdSZXN1bHQgQk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NOb25STEVEYXRhKGJvb2wgaW5S
TEUsIGkKICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudChwaXhlbCwgMiksIGFs
cGhhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBtX2J1ZmZlci0+c2V0TGFz
dERlY29kZWRSb3cobV9jb29yZC55KCkpOwogCiAgICAgICAgIC8vIFN1Y2Nlc3MsIGtlZXAgZ29p
bmcuCiAgICAgICAgIG1fZGVjb2RlZE9mZnNldCArPSBwYWRkZWROdW1CeXRlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAKaW5kZXggNWY2MTkzYjhmOWUxYmE5MzdiNmUzZmM3MzE3NDkyNDM0
ZGFhZTJkYS4uNzE5OGExMWMxZjE1NjgwMGM3YWJiMWZmZWE0MDFiMmM3NTkwODViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTI0OSwxMCArMjQ5LDE0IEBAIGJvb2wgR0lGSW1h
Z2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBj
aGFyKiByb3dCdWZmCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoeCwgeUJlZ2luLCAw
LCAwLCAwLCAwKTsKICAgICAgICAgfQogICAgIH0KKyAgICBidWZmZXIuc2V0TGFzdERlY29kZWRS
b3coeUJlZ2luKTsKIAogICAgIC8vIFRlbGwgdGhlIGZyYW1lIHRvIGNvcHkgdGhlIHJvdyBkYXRh
IGlmIG5lZWQgYmUuCi0gICAgaWYgKHJlcGVhdENvdW50ID4gMSkKKyAgICBpZiAocmVwZWF0Q291
bnQgPiAxKSB7CiAgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKHhCZWdpbiwgeEVuZCwgeUJl
Z2luLCB5RW5kKTsKKyAgICAgICAgQVNTRVJUKCh5RW5kIC0gMSkgPj0gMCk7CisgICAgICAgIGJ1
ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5RW5kIC0gMSk7CisgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0zOTAsNiArMzk0LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFt
ZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgICBmb3IgKGludCB5ID0g
cHJldlJlY3QueSgpOyB5IDwgcHJldlJlY3QubWF4WSgpOyArK3kpIHsKICAgICAgICAgICAgICAg
ICAgIGZvciAoaW50IHggPSBwcmV2UmVjdC54KCk7IHggPCBwcmV2UmVjdC5tYXhYKCk7ICsreCkK
ICAgICAgICAgICAgICAgICAgICAgICBidWZmZXItPnNldFJHQkEoeCwgeSwgMCwgMCwgMCwgMCk7
CisgICAgICAgICAgICAgICAgICBidWZmZXItPnNldExhc3REZWNvZGVkUm93KHkpOwogICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgIGlmICgocHJldlJlY3Qud2lkdGgoKSA+IDApICYmIChw
cmV2UmVjdC5oZWlnaHQoKSA+IDApKQogICAgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRIYXNB
bHBoYSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDkxZjEyMzZi
MzU5YmMxNTVhZjM3YzdmZTJjZTM2ZWE3M2M1MDk0OTYuLjQ4NjFjYjY2NzIzOTc4Y2JkYjM3Nzhl
MGIzNzgxOThlZWI5YjA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NTc3LDYgKzU3Nyw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkK
ICAgICBpZiAodHVyYm9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2UpKSB7CiAgICAgICAg
IEFTU0VSVCghbV9zY2FsZWQpOwogICAgICAgICB3aGlsZSAoaW5mby0+b3V0cHV0X3NjYW5saW5l
IDwgaW5mby0+b3V0cHV0X2hlaWdodCkgeworICAgICAgICAgICAgYnVmZmVyLnNldExhc3REZWNv
ZGVkUm93KGluZm8tPm91dHB1dF9zY2FubGluZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
KiByb3cgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihidWZmZXIuZ2V0QWRkcigw
LCBpbmZvLT5vdXRwdXRfc2NhbmxpbmUpKTsKICAgICAgICAgICAgIGlmIChqcGVnX3JlYWRfc2Nh
bmxpbmVzKGluZm8sICZyb3csIDEpICE9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNjI4LDYgKzYyOSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2Nhbmxp
bmVzKCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KKyAgICAgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGRlc3RZKTsKICAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
MTM4ZDVjNTEyOTFlYTI2ZjY5NjQzZjZhYTQ0ODg0YmI1YzY0ODBlZi4uODEwY2FhNzIwODIxOWZm
ZjZjZjYyOTc0ZThlZjdlZjFiMzQ1MWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTUyMCw2ICs1MjAsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVu
c2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAKICAgICBpZiAobm9u
VHJpdmlhbEFscGhhICYmICFidWZmZXIuaGFzQWxwaGEoKSkKICAgICAgICAgYnVmZmVyLnNldEhh
c0FscGhhKG5vblRyaXZpYWxBbHBoYSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHkp
OwogfQogCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1h
Z2VEZWNvZGVyU2tpYS5jcHAKaW5kZXggNWNjMTMyYzRkNDg0MDBiODE1MmVlNWY0ZmVmMjI0MmM0
MjlkYjZiNi4uMTMzMThhMzg0NmZmNWFlYmQ5MzAyYWQzMmUxNTMyM2RkODczOGNiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURl
Y29kZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIEltYWdlRnJhbWUm
IEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKIHZvaWQgSW1h
Z2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogewogICAgIG1fYml0bWFwLmJpdG1hcCgpLnJlc2V0
KCk7CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5
OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJh
bWVCdWZmZXJDYWNoZSgpCiAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0
YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC03Niw2ICs3Nyw3IEBAIGJvb2wgSW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAKICAgICBtX2Jp
dG1hcC5iaXRtYXAoKS5yZXNldCgpOwogICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXJC
aXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gb3RoZXIubV9s
YXN0RGVjb2RlZFJvdzsKICAgICByZXR1cm4gb3RoZXJCaXRtYXAuYml0bWFwKCkuY29weVRvKCZt
X2JpdG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCkuY29uZmlnKCkpOwogfQogCkBA
IC04NCw2ICs4Niw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGlu
dCBuZXdIZWlnaHQpCiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNl
LCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVp
Z2h0KCkpOwogCisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9iaXRtYXAuYml0bWFw
KCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3V2lkdGgsIG5ld0hl
aWdodCk7CiAgICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVscygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwODJl
MzNkZGIyYTM2MGUzODg4ZDc5YjAzYTljMjFjY2RiOGMwM2MyLi5hOWY5OGFkODBmNmYxOTgwNThk
MmFmZGViYjZhNDA5ZTIzYWU3OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTEzMiwxOSArMTMyLDI2IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wg
b25seVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfQogCi0gICAg
c3dpdGNoIChXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNpemUpKSB7Ci0g
ICAgY2FzZSBWUDhfU1RBVFVTX09LOgotICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJh
bWU6OkZyYW1lQ29tcGxldGUpOwotICAgICAgICBXZWJQSURlbGV0ZShtX2RlY29kZXIpOwotICAg
ICAgICBtX2RlY29kZXIgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFZQOF9T
VEFUVVNfU1VTUEVOREVEOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKKyAg
ICBjb25zdCBWUDhTdGF0dXNDb2RlIHN0YXR1cyA9IFdlYlBJVXBkYXRlKG1fZGVjb2RlciwgZGF0
YUJ5dGVzLCBkYXRhU2l6ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBWUDhfU1RBVFVTX09LICYmIHN0
YXR1cyAhPSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkgewogICAgICAgICBXZWJQSURlbGV0ZShtX2Rl
Y29kZXIpOwogICAgICAgICBtX2RlY29kZXIgPSAwOwogICAgICAgICByZXR1cm4gc2V0RmFpbGVk
KCk7CiAgICAgfQorICAgIGludCBsYXN0WSA9IDA7CisgICAgaWYgKCFXZWJQSURlY0dldFJHQiht
X2RlY29kZXIsICZsYXN0WSwgMCwgMCwgMCkpCisgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsK
KyAgICBBU1NFUlQobGFzdFkgPj0gMCk7CisgICAgQVNTRVJUKGxhc3RZIDw9IHNpemUoKS5oZWln
aHQoKSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGxhc3RZID8gbGFzdFkgLSAxIDog
MCk7CisKKyAgICBpZiAoc3RhdHVzID09IFZQOF9TVEFUVVNfU1VTUEVOREVEKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lQ29t
cGxldGUpOworICAgIFdlYlBJRGVsZXRlKG1fZGVjb2Rlcik7CisgICAgbV9kZWNvZGVyID0gMDsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNzc2ZTI3ODdiZjI4OTQ5ZDRmMzIx
YjE3MzU0M2JjODQyYzhlNTA3ZS4uZWRiYTY4MDE5OGM4YTgxYjk3ZThjYzQ3NTViYzc5NDdjZjEy
OWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zMTEs
NyArMzExLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIExheW91dFVu
aXQgdXNhYmxlV2lkdGggPSBjV2lkdGggLSAyOwogICAgICAgICAgICAgTGF5b3V0VW5pdCB1c2Fi
bGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9
IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1h
Z2UoKS5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2Nj
dXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0
aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yKGZy
YW1lKCkpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAg
ICAgICAgICAgICAgaWYgKGNlbnRlclkgPCAwKQogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZ
ID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRl
ciArIGxlZnRQYWQgKyBjZW50ZXJYICsgMSwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSAr
IDEpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCAr
IGltYWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFJlY3Qocm91bmRlZEludFBvaW50
KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgICAgICAgICBl
cnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDIs
NyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdAogICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5o
YXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpIHx8IGFsaWduZWRS
ZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
YWxpZ25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkpOworICAgIEltYWdlKiBp
bWcgPSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2Ut
PmltYWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSk7
CiAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00
NTAsNyArNDUwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QKICAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWx0ID8gaW1hZ2VFbHQtPmNvbXBvc2l0ZU9w
ZXJhdG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFnZSA9IG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
ID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBhbGlnbmVk
UmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBj
b250ZXh0LT5kcmF3SW1hZ2UoaW1nLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0
LCBjb21wb3NpdGVPcGVyYXRvciwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgdXNl
TG93UXVhbGl0eVNjYWxpbmcpOwogfQogCiBib29sIFJlbmRlckltYWdlOjpib3hTaGFkb3dTaG91
bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZv
aWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIFJl
bmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CiAKICAgICAvLyBDaGVjayBm
b3IgYml0bWFwIGltYWdlIHdpdGggYWxwaGEuCiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJl
c291cmNlLT5pbWFnZSgpLmdldCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0JpdG1h
cEltYWdlKCkgfHwgaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCisgICAgaWYgKCFpbWFn
ZSB8fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8fCB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdl
KGltYWdlKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZWUwYTQ0MmY3NGRlYzA5NzkzNzgzZmJmNmFk
MGNmMDU2ODUwZjhkMy4uMjlhNGYwNDVlMTZkNWU2ZDA4Mjg2NTJjNzNjYTRhZDRhZDY0NGRhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUg
IlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5n
LmgiCkBAIC0xMDc2LDYgKzEwNzcsMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUltYWdlQ29udGVudHMoKQogICAgIGlmICghY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIC8vIFdlIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUgaW1hZ2UgaXMg
ZnVsbHkgZGVjb2RlZCBiZWZvcmUgc2V0dGluZyBpdCBvbiB0aGUgbGF5ZXIuCisgICAgaWYgKGlt
YWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIXRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2Up
LT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFRo
aXMgaXMgYSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVyIGxheWVyIGZv
ciB0aGUgaW1hZ2UuCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1h
Z2UpOwogICAgIHVwZGF0ZURyYXdzQ29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA1NmJlNWNkNDE2YmNkZTI2ZTBhODU1
YmUxYWRjZWEyYjQzZmMwYjk1Li5hMTk2ZTc1ZjhhOWRmMWEyOGRjNmU3YmE5MDU0ZTk2ZjE1NTE1
MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAjaW5j
bHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgpAQCAtMTI3LDE0ICsxMjgsMTQgQEAgdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JikKICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCh0
aGlzLCBjaGlsZFBhaW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChyZW5kZXJpbmdDb250ZXh0
LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICAgICAgSW1hZ2Uq
IGltYWdlID0gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291
cmNlLT5pbWFnZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qg
PSBtX29iamVjdEJvdW5kaW5nQm94OwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0
KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgICAgICAgICAg
ICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVs
ZW1lbnQqPihub2RlKCkpOwogICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cHJlc2VydmVB
c3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgICAg
ICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcAppbmRleCAzYmFlYTI3YzlmNTU0
ODNhZjA1OGFhZmI2MTgxMDcyZTI0NGEwNmQwLi5jZGUxMzlmY2VjYWU1ODM4ZjM2MjVmOWM4Nzk5
MGEzNzcyMTA5NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNw
cApAQCAtNzYsNyArNzYsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2Vi
RGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFt
ZUF0SW5kZXgoaW5kZXgpOworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291
cmNlLnJlcXVlc3RGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBmcmFtZShBZG9wdENGLCBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbWFnZVNraWEuY3BwCmluZGV4IGZiMGRmN2NhZmZjYTFmYTBiMzdkNmU2M2E5ZWUxNzA4
Mjg4NjA2MDUuLjVkODY0YTI3YmE5MTA2MDAzNTkyOTFhNTc2YjI0NjQ2YjA1N2UxZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29u
c3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbWFnZUZy
YW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgp
OworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLnJlcXVlc3RGcmFt
ZUF0SW5kZXgoaW5kZXgpOwogICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gYWRv
cHRQdHIoaW1hZ2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIFdlYkltYWdlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151865</attachid>
            <date>2012-07-11 22:59:02 -0700</date>
            <delta_ts>2012-07-11 23:00:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120712145900.patch</filename>
            <type>text/plain</type>
            <size>19121</size>
            <attacher name="Kwonjin Jeong">gram</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBkNmFiNjlkNjlmZWE4MjgzY2VhZDY2
MzU1Yzg2YzZmZTc1OWVhZTYuLjYxODRiMzMwOTJmYzhmMGY2NjM5ZDU4NDU4MGJlMmNkYWI0ZDFi
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDctMTEgIEt3b25qaW4gSmVvbmcgIDxncmFt
QGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIEFkZCBJbWFnZURlY29kZVdvcmtlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZURlY29kZVdvcmtl
ciBpcyBhIHRocmVhZCBwb29sIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIFdvcmtRdWV1ZS4KKyAg
ICAgICAgSW1hZ2VEZWNvZGVXb3JrZXIgaW50ZXJuYWxseSBtYW5hZ2VzIGEgcG9vbCBvZiBXb3Jr
UXVldWVzIChuID0gbnVtYmVyCisgICAgICAgIG9mIGNvcmVzKSBhbmQgYXNzaWducyBvbmUgZnJv
bSB0aGUgcG9vbCB3aGVuIGFuIEltYWdlRGVjb2RlV29ya2VyCisgICAgICAgIGluc3RhbmNlIGlz
IGNyZWF0ZWQuIFNvIHR3byBJbWFnZURlY29kZVdvcmtlcnMgY2FuIHNoYXJlIG9uZSBXb3JrUXVl
dWUuCisKKyAgICAgICAgUGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMgY3JlYXRlIGFuIGluc3RhbmNl
IG9mIEltYWdlRGVjb2RlV29ya2VyIGZvcgorICAgICAgICBlYWNoIGltYWdlLiBTbyB0aGUgbnVt
YmVyIG9mIEltYWdlRGVjb2RlV29ya2VyIGluc3RhbmNlcyBjYW4gYmUKKyAgICAgICAgYXJiaXRy
YXJpbHkgbGFyZ2UsIGJ1dCB0aGUgbnVtYmVyIG9mIFdvcmtRdWV1ZXMgaXMgbGltaXRlZCB0byB0
aGUKKyAgICAgICAgbnVtYmVyIG9mIGNvcmVzLiBUaGlzIGVmZmVjdGl2ZWx5IHV0aWxpemVzIHRo
ZSB1bmRlcmx5aW5nIGNvcmVzLgorCisgICAgICAgICogd3RmL2Nocm9taXVtL01haW5UaHJlYWRD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXVEY6OmNhbGxGdW5jdGlvbk9iamVjdCk6CisgICAgICAg
IChXVEYpOgorICAgICAgICAoV1RGOjpjYWxsT25NYWluVGhyZWFkKToKKwogMjAxMi0wNy0wOSAg
S3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIE1vdmUgV29y
a1F1ZXVlIHRvIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgwOTg0NzZmZmQwNWUzY2I4OGI3NzliNDYwZDU1
ODExZjhiODE4OTcuLjhjODExNTc5ZTQ0MDlmOTNhNDI0MGNhYTMyNTljODM2OGYyM2U0NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMi0wNy0xMSAgS3dvbmppbiBKZW9uZyAgPGdy
YW1AY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQWRkIEltYWdlRGVjb2RlV29ya2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDg2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltYWdlRGVjb2RlV29y
a2VyIGlzIGEgdGhyZWFkIHBvb2wgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gV29ya1F1ZXVlLgor
ICAgICAgICBJbWFnZURlY29kZVdvcmtlciBpbnRlcm5hbGx5IG1hbmFnZXMgYSBwb29sIG9mIFdv
cmtRdWV1ZXMgKG4gPSBudW1iZXIKKyAgICAgICAgb2YgY29yZXMpIGFuZCBhc3NpZ25zIG9uZSBm
cm9tIHRoZSBwb29sIHdoZW4gYW4gSW1hZ2VEZWNvZGVXb3JrZXIKKyAgICAgICAgaW5zdGFuY2Ug
aXMgY3JlYXRlZC4gU28gdHdvIEltYWdlRGVjb2RlV29ya2VycyBjYW4gc2hhcmUgb25lIFdvcmtR
dWV1ZS4KKworICAgICAgICBQYXJhbGxlbCBpbWFnZSBkZWNvZGVycyBjcmVhdGUgYW4gaW5zdGFu
Y2Ugb2YgSW1hZ2VEZWNvZGVXb3JrZXIgZm9yCisgICAgICAgIGVhY2ggaW1hZ2UuIFNvIHRoZSBu
dW1iZXIgb2YgSW1hZ2VEZWNvZGVXb3JrZXIgaW5zdGFuY2VzIGNhbiBiZQorICAgICAgICBhcmJp
dHJhcmlseSBsYXJnZSwgYnV0IHRoZSBudW1iZXIgb2YgV29ya1F1ZXVlcyBpcyBsaW1pdGVkIHRv
IHRoZQorICAgICAgICBudW1iZXIgb2YgY29yZXMuIFRoaXMgZWZmZWN0aXZlbHkgdXRpbGl6ZXMg
dGhlIHVuZGVybHlpbmcgY29yZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZVdvcmtlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZVdvcmtlcjo6YWNxdWly
ZVNoYXJlZFdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZVdvcmtlcjo6aW5p
dGlhbGl6ZVdvcmtRdWV1ZVBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVXb3Jr
ZXI6OnF1ZXVlSWRXaXRoTWluaW11bUFjcXVpcmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZVdvcmtlcjo6SW1hZ2VEZWNvZGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVXb3JrZXI6On5JbWFnZURlY29kZVdvcmtlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZVdvcmtlcjo6aGFzSW52YWxpZGF0aW9uQmVndW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVXb3JrZXI6OmNhbmNlbGFibGVGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZVdvcmtlcjo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVXb3JrZXI6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVXb3JrZXI6OmVuc3VyZVRlcm1pbmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVXb3JrZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEltYWdlRGVjb2RlV29ya2VyKToKKwogMjAxMi0wNy0xMCAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBGaXggYSBwb3RlbnRpYWwgYnVnIG9m
IEJpdG1hcEltYWdlOjpmcmFtZUNvdW50KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
aHJvbWl1bS9NYWluVGhyZWFkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dURi93dGYvY2hyb21pdW0v
TWFpblRocmVhZENocm9taXVtLmNwcAppbmRleCA5ZTY1OTJiNTcxNTY3OWFlMmJjOWE2ZDFhMGI2
ZjNiOGM5ZTE4ZTgxLi5hZTVmYzgxOTZiMWNhNjlmYTJhMTUxNGVlMjg2YzEzZjllNzI0MjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jaHJvbWl1bS9NYWluVGhyZWFkQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2Nocm9taXVtL01haW5UaHJlYWRDaHJvbWl1bS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKICNpbmNsdWRlICJDaHJv
bWl1bVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uYWwuaCIKICNpbmNsdWRlICJUaHJl
YWRpbmcuaCIKIAogbmFtZXNwYWNlIFdURiB7CkBAIC01NCw2ICs1NSwxOCBAQCB2b2lkIGNhbGxP
bk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiBmdW5jdGlvbiwgdm9pZCogY29udGV4dCkK
ICAgICBDaHJvbWl1bVRocmVhZGluZzo6Y2FsbE9uTWFpblRocmVhZChmdW5jdGlvbiwgY29udGV4
dCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNhbGxGdW5jdGlvbk9iamVjdCh2b2lkKiBjb250ZXh0KQor
eworICAgIEZ1bmN0aW9uPHZvaWQoKT4qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb248
dm9pZCgpPio+KGNvbnRleHQpOworICAgICgqZnVuY3Rpb24pKCk7CisgICAgZGVsZXRlIGZ1bmN0
aW9uOworfQorCit2b2lkIGNhbGxPbk1haW5UaHJlYWQoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYg
ZnVuY3Rpb24pCit7CisgICAgY2FsbE9uTWFpblRocmVhZChjYWxsRnVuY3Rpb25PYmplY3QsIG5l
dyBGdW5jdGlvbjx2b2lkICgpPihmdW5jdGlvbikpOworfQorCiB2b2lkIGNhbGxPbk1haW5UaHJl
YWRBbmRXYWl0KE1haW5UaHJlYWRGdW5jdGlvbiosIHZvaWQqKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlMDczN2Q4ZmQ1YzgzMTM3Nzg3ZGRi
MmYwMTA3OTFmYzkyN2ZhYjc4Li42ZDE3MjE5ZjA2NDQ2MjA2MWRlNTc3MDk1NjE0MmUyMmQ2YTcw
NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE5NCw2ICsxMTk0LDcgQEAgU0VUKFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVXb3JrZXIuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzNzgxNzI3YWE2YTBlNGUxNTRlOWViZjc2MTll
YTlmMmNlM2M4NDNjLi5lOGRjNzA2MDA3MzYzZmMzNTk1YWNmZTk4ZmNiNmEyNTE2NjljNGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzNTUsNiArMzM1NSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVCdWZmZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZUJ1ZmZlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggYjkxNDk3NTUzZjRhMGU0YjkzNGNjNWFmNGM0YTYyNzUyMDYzMmY1OC4uYjhjYWQ1NzE2
MjQyODNjNDk2OTA0Y2M2MmYwN2EyZTExZWU3MDdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMTIyLDYg
KzExMjIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2RlV29ya2VyLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlv
bi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXApAQCAtMjI5OCw2ICsyMjk5LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzM0QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVXb3JrZXIuaCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjZmI4MmExNjcyZDRhMWEzMjYzYzUzYWQyZjQyMzU3ODQ3
ODJlNGM4Li5mNzljMWRlZjkzNmI3Zjk2MjZjZGU2NzM5ZGEwZGQ4MWEzYjU0MGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zODIsNiArMzgyLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckRhdGEuaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVCdWZmZXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgnLApAQCAtMzQ5NSw2ICszNDk2LDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2RlQnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA5MDYyYzhiMjMxZjZjMGE1YWEzYmQxYTk0YjUxZjRkNDhmZDM4ODM0Li40OTdlZThm
MGJhMDEyNmRkZmU3ZWFjMTNjOTRkOTI0NTg2YzFkYWIwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjkyOTgsNiArMjkyOTgsMTQgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXEltYWdlRGVjb2RlV29ya2VyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEltYWdl
RGVjb2RlV29ya2VyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbWFnZU9ic2VydmVyLmgiCiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzEyNmM5NWFmOWM5OTU3ODFhNmEwYzFlMzQyNDc0ZjI0NDg1YWM1
MC4uYWZmNmY5ODZmNGY0MGRkMzcxZGYzNzA5Y2QzNTc2MjY1YmZlY2JhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ4MCw2
ICs2NDgwLDggQEAKIAkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERB
NkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9OwogCQlGRkQ1Qjk3
QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEzNUNDOTc4MDBENUU5
MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi87IH07CiAJCUZGRDVCOTdCMTM1Q0M5Nzgw
MEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUZGRDZCOTdBMTM1Q0M5NzgwMEQ1RTkyQSAvKiBJbWFnZURlY29kZVdvcmtlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ2Qjk2
QTEzNUNDOTc4MDBENUU5MkEgLyogSW1hZ2VEZWNvZGVXb3JrZXIuY3BwICovOyB9OworCQlGRkQ2
Qjk3QjEzNUNDOTc4MDBENUU5MkEgLyogSW1hZ2VEZWNvZGVXb3JrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGRDZCOTZCMTM1Q0M5NzgwMEQ1RTky
QSAvKiBJbWFnZURlY29kZVdvcmtlci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0x
MzgxNSw2ICsxMzgxNyw4IEBACiAJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGRDVCOTc3MTM1Q0M5NzgwMEQ1
RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZGRDZCOTZBMTM1Q0M5NzgwMEQ1RTky
QSAvKiBJbWFnZURlY29kZVdvcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbWFnZURlY29kZVdvcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZGRDZCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBJbWFnZURlY29kZVdvcmtlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVXb3JrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTk2
NzUsNiArMTk2NzksOCBAQAogCQkJCTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFnZUJ1
ZmZlci5jcHAgKi8sCiAJCQkJQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVmZmVy
LmggKi8sCiAJCQkJMjJCRDlGN0QxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YS5o
ICovLAorCQkJCUZGRDZCOTZBMTM1Q0M5NzgwMEQ1RTkyQSAvKiBJbWFnZURlY29kZVdvcmtlci5j
cHAgKi8KKwkJCQlGRkQ2Qjk2QTEzNUNDOTc4MDBENUU5MkEgLyogSW1hZ2VEZWNvZGVXb3JrZXIu
aCAqLwogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8s
CiAJCQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICov
LAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZVdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZVdvcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNmODBmZDM3MjUyMTYzMGM4MmY0YWJkODM3ZjBjMmNi
NzU4NjM4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2RlV29ya2VyLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbWFnZURlY29kZVdvcmtlci5oIgorCisjaW5jbHVkZSA8bGltaXRzPgor
CisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZlY3RvcjxXb3JrUXVldWUqPiog
SW1hZ2VEZWNvZGVXb3JrZXI6OnNfd29ya1F1ZXVlUG9vbCA9IDA7CitWZWN0b3I8aW50PiogSW1h
Z2VEZWNvZGVXb3JrZXI6OnNfd29ya1F1ZXVlQWNxdWlyZUNvdW50ID0gMDsKKworUGFzc1JlZlB0
cjxJbWFnZURlY29kZVdvcmtlcj4gSW1hZ2VEZWNvZGVXb3JrZXI6OmFjcXVpcmVTaGFyZWRXb3Jr
ZXIoKQoreworICAgIGlmICghc193b3JrUXVldWVQb29sKQorICAgICAgICBpbml0aWFsaXplV29y
a1F1ZXVlUG9vbCgpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURlY29kZVdvcmtl
cigpKTsKK30KKwordm9pZCBJbWFnZURlY29kZVdvcmtlcjo6aW5pdGlhbGl6ZVdvcmtRdWV1ZVBv
b2woKQoreworICAgIGNvbnN0IGludCBudW1Db3JlcyA9IFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JD
b3JlcygpOworCisgICAgc193b3JrUXVldWVBY3F1aXJlQ291bnQgPSBuZXcgVmVjdG9yPGludD4o
bnVtQ29yZXMsIDApOworICAgIHNfd29ya1F1ZXVlUG9vbCA9IG5ldyBWZWN0b3I8V29ya1F1ZXVl
Kj4oKTsKKyAgICBzX3dvcmtRdWV1ZVBvb2wtPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtQ29y
ZXMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29yZXM7IGkrKykgeworICAgICAgICBz
X3dvcmtRdWV1ZUFjcXVpcmVDb3VudC0+YXQoaSkgPSAwOworICAgICAgICBTdHJpbmcgcXVldWVO
YW1lID0gIkltYWdlRGVjb2RlV29ya2VyLiIgKyBTdHJpbmc6Om51bWJlcihpKTsKKyAgICAgICAg
c193b3JrUXVldWVQb29sLT5hcHBlbmQobmV3IFdvcmtRdWV1ZShxdWV1ZU5hbWUuYXNjaWkoKS5k
YXRhKCkpKTsKKyAgICB9Cit9CisKK2ludCBJbWFnZURlY29kZVdvcmtlcjo6cXVldWVJZFdpdGhN
aW5pbXVtQWNxdWlyZUNvdW50KCkKK3sKKyAgICBpbnQgbWluaW11bUFjcXVpcmVDb3VudCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgaW50IGluZGV4ID0gc193b3JrUXVl
dWVQb29sLT5zaXplKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNfd29ya1F1ZXVl
UG9vbC0+c2l6ZSgpOyBpKyspCisgICAgICAgIGlmIChzX3dvcmtRdWV1ZUFjcXVpcmVDb3VudC0+
YXQoaSkgPCBtaW5pbXVtQWNxdWlyZUNvdW50KSB7CisgICAgICAgICAgICBtaW5pbXVtQWNxdWly
ZUNvdW50ID0gc193b3JrUXVldWVBY3F1aXJlQ291bnQtPmF0KGkpOworICAgICAgICAgICAgaW5k
ZXggPSBpOworICAgICAgICB9CisKKyAgICBBU1NFUlQoaW5kZXggPCBzX3dvcmtRdWV1ZVBvb2wt
PnNpemUoKSk7CisgICAgcmV0dXJuIGluZGV4OworfQorCitJbWFnZURlY29kZVdvcmtlcjo6SW1h
Z2VEZWNvZGVXb3JrZXIoKQorICAgIDogbV93b3JrZXJTdGF0dXMoUnVubmluZykKK3sKKyAgICBt
X3dvcmtRdWV1ZUlkID0gcXVldWVJZFdpdGhNaW5pbXVtQWNxdWlyZUNvdW50KCk7CisgICAgbV93
b3JrUXVldWUgPSAoKnNfd29ya1F1ZXVlUG9vbClbbV93b3JrUXVldWVJZF07CisgICAgc193b3Jr
UXVldWVBY3F1aXJlQ291bnQtPmF0KG1fd29ya1F1ZXVlSWQpKys7Cit9CisKK0ltYWdlRGVjb2Rl
V29ya2VyOjp+SW1hZ2VEZWNvZGVXb3JrZXIoKQoreworICAgIEFTU0VSVChtX3dvcmtlclN0YXR1
cyA9PSBJbnZhaWRhdGlvblJlYWR5KTsKK30KKworYm9vbCBJbWFnZURlY29kZVdvcmtlcjo6aGFz
SW52YWxpZGF0aW9uQmVndW4oKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtlclN0
YXR1c011dGV4KTsKKyAgICBpZiAobV93b3JrZXJTdGF0dXMgPT0gSW52YWxpZGF0aW9uQmVndW4p
IHsKKyAgICAgICAgbV93b3JrZXJTdGF0dXMgPSBJbnZhaWRhdGlvblJlYWR5OworICAgICAgICBt
X2ludmFsaWRhdGlvblJlYWR5LnNpZ25hbCgpOworICAgIH0KKyAgICByZXR1cm4gbV93b3JrZXJT
dGF0dXMgIT0gUnVubmluZzsKK30KKwordm9pZCBJbWFnZURlY29kZVdvcmtlcjo6Y2FuY2VsYWJs
ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+IHdvcmtlciwgY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCit7CisgICAgaWYgKFVOTElLRUxZKHdvcmtlci0+aGFz
SW52YWxpZGF0aW9uQmVndW4oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZ1bmN0aW9uKCk7
Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVXb3JrZXI6OnBvc3RUYXNrKGNvbnN0IEZ1bmN0aW9uPHZv
aWQoKT4mIGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChtX3dvcmtlclN0YXR1cyA9PSBSdW5uaW5n
KTsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goYmluZChJbWFnZURlY29kZVdvcmtlcjo6Y2Fu
Y2VsYWJsZUZ1bmN0aW9uLCB0aGlzLCBmdW5jdGlvbikpOworfQorCit2b2lkIEltYWdlRGVjb2Rl
V29ya2VyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93b3JrZXJT
dGF0dXNNdXRleCk7CisKKyAgICBpZiAobV93b3JrZXJTdGF0dXMgIT0gUnVubmluZykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV93b3JrZXJTdGF0dXMgPSBJbnZhbGlkYXRpb25CZWd1bjsKKwor
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChiaW5kKCZJbWFnZURlY29kZVdvcmtlcjo6ZW5zdXJl
VGVybWluYXRlLCB0aGlzKSk7CisgICAgd2hpbGUgKG1fd29ya2VyU3RhdHVzICE9IEludmFpZGF0
aW9uUmVhZHkpCisgICAgICAgIG1faW52YWxpZGF0aW9uUmVhZHkud2FpdChtX3dvcmtlclN0YXR1
c011dGV4KTsKKyAgICBzX3dvcmtRdWV1ZUFjcXVpcmVDb3VudC0+YXQobV93b3JrUXVldWVJZCkt
LTsKK30KKwordm9pZCBJbWFnZURlY29kZVdvcmtlcjo6ZW5zdXJlVGVybWluYXRlKFBhc3NSZWZQ
dHI8SW1hZ2VEZWNvZGVXb3JrZXI+IHdvcmtlcikKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIo
d29ya2VyLT5tX3dvcmtlclN0YXR1c011dGV4KTsKKyAgICBBU1NFUlQod29ya2VyLT5tX3dvcmtl
clN0YXR1cyAhPSBSdW5uaW5nKTsKKyAgICB3b3JrZXItPm1fd29ya2VyU3RhdHVzID0gSW52YWlk
YXRpb25SZWFkeTsKKyAgICB3b3JrZXItPm1faW52YWxpZGF0aW9uUmVhZHkuc2lnbmFsKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2RlV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZVdvcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NWY1N2EwNDA4
YjJiODAxYTgxODg0ZTMzZDE3ZGE5OTM3NWIyODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZVdvcmtlci5oCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEltYWdlRGVjb2RlV29ya2VyX2gKKyNkZWZpbmUgSW1hZ2VEZWNvZGVXb3JrZXJf
aAorCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KKworY2xhc3MgV29ya1F1ZXVlOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlRGVjb2RlV29ya2VyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2RlV29ya2VyPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+IGFjcXVpcmVTaGFyZWRXb3JrZXIoKTsK
KworICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlV29ya2VyKCk7CisKKyAgICB2b2lkIHBvc3RUYXNr
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworcHJp
dmF0ZToKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplV29ya1F1ZXVlUG9vbCgpOworICAgIHN0
YXRpYyBpbnQgcXVldWVJZFdpdGhNaW5pbXVtQWNxdWlyZUNvdW50KCk7CisKKyAgICAvLyBGSVhN
RTogVGhlc2UgdHdvIHN0YXRpYyBmdW5jdGlvbnMgc2hvdWxkIGJlY29tZSBub24tc3RhdGljIG1l
dGhvZHMuCisgICAgLy8gSG93ZXZlciwgZGVmaW5pbmcgdGhlbSBhcyBub24tc3RhdGljIG1ldGhv
ZHMgY2F1c2VzIGFuIHVuaW50ZW5kZWQgZGVzdHJ1Y3RvcgorICAgIC8vIGNhbGwgd2hpbGUgYSBG
dW5jdGlvbiBvYmplY3QgcGFzc2VkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goKSBpcyBiZWluZyBkZXN0
cnVjdGVkLgorICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgdGhlc2UgZnVuY3Rpb25zIGFy
ZSBkZWZpbmVkIGFzIHN0YXRpYyBtZXRob2RzLgorICAgIHN0YXRpYyB2b2lkIGNhbmNlbGFibGVG
dW5jdGlvbihQYXNzUmVmUHRyPEltYWdlRGVjb2RlV29ya2VyPiwgY29uc3QgRnVuY3Rpb248dm9p
ZCgpPiYpOworICAgIHN0YXRpYyB2b2lkIGVuc3VyZVRlcm1pbmF0ZShQYXNzUmVmUHRyPEltYWdl
RGVjb2RlV29ya2VyPik7CisKKyAgICBJbWFnZURlY29kZVdvcmtlcigpOworCisgICAgYm9vbCBo
YXNJbnZhbGlkYXRpb25CZWd1bigpOworCisgICAgc3RhdGljIFZlY3RvcjxXb3JrUXVldWUqPiog
c193b3JrUXVldWVQb29sOworICAgIHN0YXRpYyBWZWN0b3I8aW50Piogc193b3JrUXVldWVBY3F1
aXJlQ291bnQ7CisKKyAgICBlbnVtIFdvcmtlclN0YXR1cyB7IFJ1bm5pbmcsIEludmFsaWRhdGlv
bkJlZ3VuLCBJbnZhaWRhdGlvblJlYWR5IH07CisgICAgTXV0ZXggbV93b3JrZXJTdGF0dXNNdXRl
eDsKKyAgICBXb3JrZXJTdGF0dXMgbV93b3JrZXJTdGF0dXM7CisgICAgVGhyZWFkQ29uZGl0aW9u
IG1faW52YWxpZGF0aW9uUmVhZHk7CisKKyAgICBpbnQgbV93b3JrUXVldWVJZDsKKyAgICBXb3Jr
UXVldWUqIG1fd29ya1F1ZXVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gSW1hZ2VEZWNvZGVXb3JrZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152868</attachid>
            <date>2012-07-17 16:26:24 -0700</date>
            <delta_ts>2012-07-17 18:00:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120718082617.patch</filename>
            <type>text/plain</type>
            <size>92938</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmMDY5ZDFmYjgxZGQz
ZjE5MGIxZjFkNDMxNTI1YjA0NzljZDg1NC4uZmI2MmM5OTVkMmY3ZmMxY2YyNGI0MzE0YTU4MDRl
MzNiYTc2YzY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5OSBAQAogMjAxMi0wNy0xNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpsYXN0RGVj
b2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRMYXN0RGVjb2RlZFJv
dyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VS
ZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVy
Ojpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xl
YXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKworMjAxMi0wNy0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBSZWZhY3RvcmluZyBtZXRhZGF0YSBv
ZiBCaXRtYXBJbWFnZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNzU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWExNTJjNjE4ZDgy
Mzc2ZWJmOGZhYTIzMDYxNGIzMGYxNzljMjcyMy4uZjgwNjVkZGY3YzBjNTU5NDkzYjgyYmExMTI4
ZTY4NDUyMWE5Y2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBA
QAogMjAxMi0wNy0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
IAorICAgICAgICBBZGQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcg
YW5kIEt3YW5nIFl1bCBTZW8uCisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAg
ICAgICB0aW1lIGluIGxvYWRpbmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxl
IGltYWdlIGRlY29kaW5nIHRocmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFj
a2dyb3VuZC4KKworICAgICAgICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1
bWVudC9wdWI/aWQ9MTJnZjdNaE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAK
KyAgICAgICAgZm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgICogc3JjL1dlYklt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgorICAgICAg
ICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJv
bURhdGEpOgorCisyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgorCiAgICAgICAgIFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQ0MwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGVmZTdkNWE0MjJlNjZlNThkNTk3YjIwNTVkZDE2N2VjYjIx
Y2I2YWIuLmJiMzU1MTY2MTk0M2U3NzNiMWQ4M2Q5MTExOGM1NzhkMGU3MTA4NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xMjA1LDkgKzEyMDUsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2RlV29ya2VyLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGUwMzJhM2JhNjNhNjU0Mzg3ZjA5NDI5NGIx
ZDVjNDE1NDIxMDU4ZDguLmI1N2ViMjJiYmIyOWNjNGVjZDIyZGQ3ZmU0OWZkOWU0ZGRlNWY5ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzIwOSw2ICszMjA5LDExIEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JTcGFjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXku
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggYmJjODc0NGE2NDkyNWZlNDc3ZTZkYjc4MWE5NTRlY2E0MDBiMzc4OC4uY2YzZTM0ZGY0
MDIyZWE1ZjBlOTA3NGQxYTNjZjJkZTczMDc1MWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05NjUsMTAg
Kzk2NSwxMiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIFwKQEAgLTIwODYsMTEgKzIwODgsMTQgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBc
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJz
YWxTdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTmF0aXZlSW1hZ2VRdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2ZTBmY2VkZmJlOTU5
ZjQzOWRmMDU0MTM0ZThiZTI3MDUxZDUxMzJiLi5hNGE4ZjA4OGQyYTUxMjk0YmIxNGZlZTg4NjBi
NjZhYmMyZWM0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTEwLDExICszNTEwLDE2IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJp
dG1hcEltYWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5o
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
MmE3NDRhZjY5MzhlYjRmOGMwMDYyOWU2YzkwNjU3MjY0ODQ1ZjBkYy4uYWM1ZDMyMDY4YWJjN2Rm
OGRkNWVlNzEwNzJlZTJkZTZhNWM0YWFhYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NDA2LDYgKzI5NDA2LDE4IEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXJhbGxlbElt
YWdlRGVjb2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZl
ci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KQEAgLTI5NDM0LDYgKzI5NDQ2LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDhlNjI4ZWIzZjhlOWY3OThmZTgwM2RhZTJhYjU0NTExZDMzNTE2ZjAuLmNjYjVm
NmVhNWE5MjkxNzI1M2NmMjdlYzVmY2I4NGM1NzVjMmQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjAsNiArMTQyMCw4
IEBACiAJCTRCMzA0M0NEMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzA0M0NCMEFFMDM3M0IwMEE4MjY0
NyAvKiBFZGl0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkxMEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovOyB9OwogCQk0QjM0ODA5NDBF
RUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCAqLzsgfTsKKwkJNUIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5jcHAgKi87IH07CisJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMz
OUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjZGQTZGNTBDMzlFNDhDMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkZBNkYzMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwICovOyB9Owog
CQk0QjZGQTZGNzBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjYwQzM5RTRBMTAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLzsgfTsKQEAgLTg1MjQsNiArODUyNiw4IEBA
CiAJCTRCMzA0M0NCMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0dNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJ
bWFnZVNvdXJjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlU291
cmNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUIzNDgwOTEwRUVGNTBENDAw
QUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRC
NkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU21hcnRSZXBsYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRCNkZBNkYzMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0
UmVwbGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTY4LDYgKzE5
NTcyLDggQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAq
LywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAg
Ki8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAq
LywKKwkJCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UuY3BwICovLAorCQkJCTVCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZS5oICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2c7CkBAIC0yNDUyNyw2
ICsyNDUzMyw3IEBACiAJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVx
dWVzdENGTmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2N0YwQ0U5MjNB
MTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MEE1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MEE3MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVs
YXRpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE5MTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MTAsNiArMjc3MTcs
NyBAQAogCQkJCTUxNEM3NjdFMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjU1MENFOTIz
NEYwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE0MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQTYxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBBODEyQjAyNkY3
MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDMyNzY4
MDBjYTUyNjAzZGZiNGQ0YzYxOTkxM2QxYjM0NjkwMzRiY2QuLjgwM2UyOWQxNDEyMTU1YjFjOWVj
ZDQxYjY3ZWE3MzQwNjBjNDgxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgQml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxl
KGZhbHNlKQogICAgICwgbV9oYXNVbmlmb3JtRnJhbWVTaXplKHRydWUpCiAgICAgLCBtX2hhdmVG
cmFtZUNvdW50KGZhbHNlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKIH0KIApA
QCAtMjA4LDcgKzIwOSwxMiBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55
IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1h
LXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1fZnJhbWUg
JiYgIW1fZnJhbWVzW2ldLm1faXNDb21wbGV0ZSkKKworICAgICAgICAvLyBOT1RFOiBEb24ndCBj
bGVhciB0aGUgY3VycmVudCBmcmFtZSwgYmVjYXVzZSB0aGUgZnJhbWUgbWlnaHQgaGF2ZSBiZWVu
IGRlY29kZWQKKyAgICAgICAgLy8gaW4gcmV0YWluZWQgbW9kZSBhbmQgUmVuZGVySW1hZ2UgaGFz
bid0IHJlbmRlciB0aGlzIGRlY29kZWQgaW1hZ2UgeWV0LgorICAgICAgICAvLyBJZiB0aGUgY3Vy
cmVudCBmcmFtZSBpcyByZW1vdmVkIGhlcmUsIHRoZSBpbWFnZSBlbGVtZW50IHdpbGwgYmUgcmVu
ZGVyZWQgYXMgd2hpdGUgYm94LgorICAgICAgICAvLyBUaGUgY3VycmVudCBmcmFtZSB3aWxsIGJl
IHJlbW92ZWQgbGF0ZXIgd2hlbiByZXRhaW5lZCBtb2RlIGRlY29kaW5nIGlzIGZpbmlzaGVkLgor
ICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBs
ZXRlICYmIG1fY3VycmVudEZyYW1lICE9IGkpCiAgICAgICAgICAgICBmcmFtZXNDbGVhcmVkICs9
IChtX2ZyYW1lc1tpXS5jbGVhcih0cnVlKSA/IDEgOiAwKTsKICAgICB9CiAgICAgZGVzdHJveU1l
dGFkYXRhQW5kTm90aWZ5KGZyYW1lc0NsZWFyZWQpOwpAQCAtMjU2LDggKzI2MiwxOCBAQCBib29s
IEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCkKICAgICBpZiAo
aW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAg
ICBpZiAobV9pc0NhY2hpbmdGcmFtZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBt
X2ZyYW1lIGNhbiBleGlzdCB3aGVuIG1faXNDb21wbGV0ZSBpcyBmYWxzZSwgc28gd2UgbmVlZCB0
byBjYWNoZSBhIG5ldyBmcmFtZSBldmVuIGlmIG1fZnJhbWUgZXhpc3RzLgorICAgIC8vIFNlZSBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQgZm9yIGV4cGxhbmF0aW9uLgorICAgIGJvb2wgbmVlZFRv
Q2FjaGUgPSBpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIGlmIChuZWVkVG9DYWNo
ZSkgeworICAgICAgICBtX2lzQ2FjaGluZ0ZyYW1lID0gdHJ1ZTsKICAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCk7CisgICAgICAgIG1faXNDYWNoaW5nRnJhbWUgPSBmYWxzZTsKKyAgICB9CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY3LDExICsyODMsMjcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgpCiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSA8IG51
bUZyYW1lcykKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwogCi0gICAgbV9zb3Vy
Y2UucmVxdWVzdEZyYW1lQXRJbmRleChpbmRleCk7CisgICAgbV9zb3VyY2UucmVxdWVzdEZyYW1l
QXRJbmRleChpbmRleCwgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkpOwogfQogCi12b2lkIEJpdG1h
cEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VG
cmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQorYm9vbCBCaXRtYXBJbWFnZTo6cmV0YWluZWRNb2Rl
UmVuZGVyaW5nKCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQo
KSAmJiBtX3JldGFpbmVkTW9kZUltYWdlLT5yZXRhaW5lZE1vZGVSZW5kZXJpbmcoKTsKK30KKwor
dm9pZCBCaXRtYXBJbWFnZTo6ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1lRGF0YSwgYm9vbCByZXRhaW5lZCwgYm9vbCBw
YXJhbGxlbERlY29kZXJDYW5jZWxlZCkKK3sKKyAgICAvLyBJdCBpcyBwb3NzaWJsZSB0byBjYWxs
IGNhY2hlRnJhbWUgaW5kaXJlY3RseSBpbiB0aGlzIG1ldGhvZC4KKyAgICBSZXRhaW5lZE1vZGVT
YXZlciByZXRhaW5lZE1vZGVTYXZlcihtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpLCByZXRhaW5l
ZCk7CisKKyAgICAvLyBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSBtdXN0IGJlIGNsZWFyZWQgYmVm
b3JlIGl0IGlzIHJlcGxhY2VkIHdpdGggbmV3IGRlY29kZWQgZnJhbWUuCisgICAgLy8gSWYgd2Ug
Zm9yZ2V0IHRvIGNsZWFyIG1fZnJhbWUsIHRoZSBvbGQgbV9mcmFtZSBsZWFrcy4KKyAgICAvLyBT
ZWUgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkIGZvciBleHBsYW5hdGlvbiB3aHkgdGhlIGRlY29k
ZWQgZnJhbWUgbXVzdCBiZSByZW1vdmVkIGhlcmUuCisgICAgaW50IGZyYW1lc0NsZWFyZWQgPSAw
OworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICAgICAgZnJhbWVzQ2xlYXJl
ZCArPSAobV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpID8gMSA6IDApOworICAgIGRlc3Ryb3lN
ZXRhZGF0YUFuZE5vdGlmeShmcmFtZXNDbGVhcmVkKTsKKwogICAgIG1fZnJhbWVzW2luZGV4XS5z
ZXRGcm9tSW1hZ2VGcmFtZURhdGEoaW1hZ2VGcmFtZURhdGEpOwogCiAgICAgc2l6ZV90IG51bUZy
YW1lcyA9IGZyYW1lQ291bnQoKTsKQEAgLTI4OCw4ICszMjAsMTIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IEltYWdlRnJhbWVE
YXRhJiBpbWEKICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCiAgICAg
ICAgIGRlbHRhQnl0ZXMgLT0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7CiAgICAgICAgIG1fZGVj
b2RlZFByb3BlcnRpZXNTaXplID0gMDsKLSAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAg
ICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkgewogICAgICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRlcyk7CisKKyAgICAgICAgICAgIGlm
ICgobV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiByZXRhaW5lZCkgfHwgcGFyYWxsZWxE
ZWNvZGVyQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5jaGFuZ2Vk
SW5SZWN0KHRoaXMsIEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CisgICAgICAgIH0KICAg
ICB9CiB9CiAKQEAgLTMwOSw3ICszNDUsMTMgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gKHNlZSBkZXN0cm95RGVjb2RlZERh
dGEoKSBhbmQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSkKICAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2lzQ29tcGxldGU7CisgICAgLy8gSWYgdGhlIGZyYW1lIGF0IHRoZSBnaXZlbiBp
bmRleCBpcyBkZWNvZGVkIGJ5IHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCBtX2ZyYW1lIGNhbiBi
ZSAwIGV2ZW4gaWYgbV9pc0NvbXBsZXRlIGlzIHRydWUuCisgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGUgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7Cit9CisKK2Jvb2wg
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKQoreworICAgIHJldHVybiBmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIH0KIAogZmxvYXQgQml0bWFwSW1h
Z2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDgxNzcyNzNkY2Y5MGRjNWMw
NDM1NTc3NjAyNWYyNjY5YTA1MTIxYjUuLjhjYmM2NTQ1NTM3MDkxZmI2YmM1NWM1NWY2ZTA5Mzc4
Nzk2NzVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIK
ICNpbmNsdWRlICJJbWFnZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAKICNpZiBQTEFURk9STShNQUMp
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTIwLDEwICsxMjEsMTIgQEAgcHJpdmF0
ZToKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAogY2xhc3MgQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2UsIHB1YmxpYyBJbWFnZVNvdXJjZU9i
c2VydmVyIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U7CiAgICAg
ZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2U7
CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBmcmllbmQgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAgICAgewpAQCAt
MjAxLDcgKzIwNCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VPYnNl
cnZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29u
c3QgSW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJ
bmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZhbHNl
LCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjM4LDYgKzI0MSw4IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogCisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBs
ZXRlKCk7CisKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNz
ZWQgZXhjZXB0IGludGVybmFsbHkuCiAgICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCk7
CiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdLiBSZXR1cm5z
IGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3VuZHMuCkBAIC0yOTMsNiArMjk4LDggQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsKICAgICB2aXJ0
dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKICAgICAKKyAgICBib29sIHJldGFpbmVkTW9k
ZVJlbmRlcmluZygpIGNvbnN0OworCiAgICAgSW1hZ2VTb3VyY2UgbV9zb3VyY2U7CiAgICAgbXV0
YWJsZSBJbnRTaXplIG1fc2l6ZTsgLy8gVGhlIHNpemUgdG8gdXNlIGZvciB0aGUgb3ZlcmFsbCBp
bWFnZSAod2lsbCBqdXN0IGJlIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSkuCiAgICAgbXV0
YWJsZSBJbnRTaXplIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKQEAgLTMxNyw2ICszMjQs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2RlY29kZWRQcm9wZXJ0aWVz
U2l6ZTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVkIGJ5IHRoZSBzb3VyY2UgdG8gZGV0ZXJt
aW5lIGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwgZnJhbWUgY291bnQsIGV0YykuCiAgICAg
c2l6ZV90IG1fZnJhbWVDb3VudDsKIAorICAgIFJlZlB0cjxSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZT4gbV9yZXRhaW5lZE1vZGVJbWFnZTsKKwogICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAv
LyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1hZ2UuCiAgICAgYm9vbCBtX2No
ZWNrZWRGb3JTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFt
ZSBmb3Igc29saWQgY29sb3IuCiAKQEAgLTMyNyw2ICszMzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0YWlu
IHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgogICAg
IG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAgIG11dGFibGUgYm9v
bCBtX2hhdmVGcmFtZUNvdW50IDogMTsKKworICAgIGJvb2wgbV9pc0NhY2hpbmdGcmFtZSA6IDE7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggMDIwMzM0ZWNmZGQ1NmNlZGE0NmU3YWE5ZTMyMWVlZjE1OTJkNDM5MS4u
MTA5OWRiNWNhY2FiZTYwNDI2N2M5OGMzYzc1NWQ0ZDFjZDdkNjY4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzUsOSArMzUs
MTMgQEAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFy
YWxsZWxJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzX3Jlc29sdXRpb25U
aHJlc2hvbGRGb3JQYXJhbGxlbCA9IDUxMiAqIDUxMjsKKwogI2lmIEVOQUJMRShJTUFHRV9ERUNP
REVSX0RPV05fU0FNUExJTkcpCiB1bnNpZ25lZCBJbWFnZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UgPSAxMDI0ICogMTAyNDsKICNlbmRpZgpAQCAtNjYsMTEgKzcwLDE1IEBAIElt
YWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoYm9vbCBk
ZXN0cm95QWxsLCBzaXplX3QgY2xlYXJCZWZvcmVGcmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRlc3Ryb3lBbGwpIHsKLSAgICAgICAg
aWYgKG1fZGVjb2RlcikKKyAgICAgICAgLy8gT25seSBHSUYgZGVjb2RlciBpbXBsZW1lbnRzIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZS4KKyAgICAgICAgaWYgKG1fZGVjb2RlciAmJiAhbV9wYXJhbGxl
bERlY29kZXIpCiAgICAgICAgICAgICBtX2RlY29kZXItPmNsZWFyRnJhbWVCdWZmZXJDYWNoZShj
bGVhckJlZm9yZUZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX3Bh
cmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKKwog
ICAgIGRlbGV0ZSBtX2RlY29kZXI7CiAgICAgbV9kZWNvZGVyID0gMDsKICAgICBpZiAoZGF0YSkK
QEAgLTg4LDYgKzk2LDEzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGV4
YW1pbmUgdGhlIGRhdGEgYW5kIGluc3RhbnRpYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBhcHByb3By
aWF0ZSBkZWNvZGVyIHBsdWdpbi4KICAgICAvLyBJZiBpbnN1ZmZpY2llbnQgYnl0ZXMgYXJlIGF2
YWlsYWJsZSB0byBkZXRlcm1pbmUgdGhlIGltYWdlIHR5cGUsIG5vIGRlY29kZXIgcGx1Z2luIHdp
bGwgYmUKICAgICAvLyBtYWRlLgorCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKSB7
CisgICAgICAgIEFTU0VSVChtX2RlY29kZXIpOworICAgICAgICBtX3BhcmFsbGVsRGVjb2Rlci0+
c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgbV9kZWNvZGVyID0gc3RhdGljX2Nhc3Q8
TmF0aXZlSW1hZ2VTb3VyY2VQdHI+KEltYWdlRGVjb2Rlcjo6Y3JlYXRlKCpkYXRhLCBtX2FscGhh
T3B0aW9uLCBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAjaWYgRU5BQkxFKElNQUdF
X0RFQ09ERVJfRE9XTl9TQU1QTElORykKQEAgLTEwMiwxMSArMTE3LDE1IEBAIHZvaWQgSW1hZ2VT
b3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
IAogU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7CisgICAg
aWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gbV9wYXJhbGxlbERl
Y29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCk7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVj
b2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCiBib29sIEltYWdlU291
cmNlOjppc1NpemVBdmFpbGFibGUoKQogeworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciAmJiBtX2RlY29k
ZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCkBAIC0xMTYsNiArMTM1LDggQEAgSW50U2l6ZSBJ
bWFnZVNvdXJjZTo6c2l6ZShSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVj
dE9yaWVudGF0aW9uKQogICAgIGlmIChzaG91bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKKyAgICBpZiAo
bV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rl
ci0+c2l6ZSgpOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPnNpemUoKSA6IElu
dFNpemUoKTsKIH0KIApAQCAtMTI1LDYgKzE0Niw4IEBAIEludFNpemUgSW1hZ2VTb3VyY2U6OmZy
YW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0K
ICAgICBpZiAoc2hvdWxkUmVzcGVjdE9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCisgICAgaWYgKG1fcGFyYWxsZWxEZWNv
ZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gbV9wYXJhbGxlbERlY29kZXItPnNpemUoKTsKICAg
ICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4KSA6
IEludFNpemUoKTsKIH0KIApAQCAtMTQwLDIzICsxNjMsMTIwIEBAIHNpemVfdCBJbWFnZVNvdXJj
ZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3QKIAogaW50IEltYWdl
U291cmNlOjpyZXBldGl0aW9uQ291bnQoKQogeworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Ob25lOwogICAgIHJldHVybiBtX2RlY29k
ZXIgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgpIDogY0FuaW1hdGlvbk5vbmU7CiB9CiAK
IHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiB7CisgICAgaWYgKG1fcGFy
YWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gbV9kZWNv
ZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi12b2lkIEltYWdlU291cmNl
OjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK0ltYWdlRnJhbWVEYXRhIEltYWdl
U291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgYm9vbCByZXRhaW5lZE1v
ZGVSZW5kZXJpbmcpCit7CisgICAgQVNTRVJUKCEocmV0YWluZWRNb2RlUmVuZGVyaW5nICYmIGlu
ZGV4KSk7CisgICAgQVNTRVJUKCEocmV0YWluZWRNb2RlUmVuZGVyaW5nICYmICFtX29ic2VydmVy
KSk7CisKKyAgICBpZiAoIW1fZGVjb2RlcikgeworICAgICAgICBtX29ic2VydmVyLT5kaWRSZWNl
aXZlRnJhbWVBdEluZGV4KGluZGV4LCBJbWFnZUZyYW1lRGF0YSgpKTsKKyAgICAgICAgcmV0dXJu
IEltYWdlRnJhbWVEYXRhKCk7CisgICAgfQorCisgICAgaWYgKCFyZXRhaW5lZE1vZGVSZW5kZXJp
bmcgfHwgIW1fb2JzZXJ2ZXIgfHwgZmlyc3RGcmFtZUlzQ29tcGxldGUoKSkKKyAgICAgICAgcmV0
dXJuIHNlcmlhbERlY29kZShpbmRleCk7CisKKyAgICBpZiAoc2hvdWxkRGVjb2RlUGFyYWxsZWwo
KSkgeworICAgICAgICBwYXJhbGxlbERlY29kZSgpOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFt
ZURhdGEoKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VyaWFsRGVjb2RlKGluZGV4KTsKK30KKwor
Ym9vbCBJbWFnZVNvdXJjZTo6c2hvdWxkRGVjb2RlUGFyYWxsZWwoKQoreworICAgIEFTU0VSVCht
X2RlY29kZXIpOworCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChXVEY6Om51bWJlck9mUHJvY2Vzc29yQ29yZXMoKSA9PSAx
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZmlsZUV4dCA9IGZpbGVuYW1l
RXh0ZW5zaW9uKCk7CisgICAgaWYgKGZpbGVFeHQgPT0gImljbyIgfHwgZmlsZUV4dCA9PSAiZ2lm
IikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpc1NpemVBdmFpbGFibGUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNpemUoKS5hcmVhKCkgPCBzX3Jlc29s
dXRpb25UaHJlc2hvbGRGb3JQYXJhbGxlbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZpcnN0RnJhbWVJc0NvbXBsZXRl
KCkKK3sKKyAgICBBU1NFUlQobV9kZWNvZGVyKTsKKyAgICBJbWFnZUZyYW1lKiBpbWFnZUZyYW1l
ID0gMDsKKyAgICBpZiAoIW1fcGFyYWxsZWxEZWNvZGVyKQorICAgICAgICBpbWFnZUZyYW1lID0g
bV9kZWNvZGVyLT5maXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2RlKCk7CisgICAgcmV0dXJuIGlt
YWdlRnJhbWUgJiYgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbWFnZUZyYW1lKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUoKQoreworICAgIGNyZWF0ZVBhcmFsbGVsRGVj
b2RlcklmTmVlZGVkKCk7CisgICAgbV9wYXJhbGxlbERlY29kZXItPmRlY29kZSgpOworfQorCit2
b2lkIEltYWdlU291cmNlOjpkaWREZWNvZGUoY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJh
bWVEYXRhKQoreworICAgIEFTU0VSVChtX29ic2VydmVyKTsKKyAgICBtX29ic2VydmVyLT5kaWRS
ZWNlaXZlRnJhbWVBdEluZGV4KDAsIGltYWdlRnJhbWVEYXRhLCB0cnVlKTsKKworICAgIGlmIChp
bWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUpCisgICAgICAgIGNsZWFyUGFyYWxsZWxEZWNvZGVy
KCk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNyZWF0ZVBhcmFsbGVsRGVjb2RlcklmTmVlZGVk
KCkKK3sKKyAgICBpZiAoIW1fcGFyYWxsZWxEZWNvZGVyKQorICAgICAgICBtX3BhcmFsbGVsRGVj
b2RlciA9IGFkb3B0UmVmKG5ldyBQYXJhbGxlbEltYWdlRGVjb2Rlcih0aGlzLCBtX2RlY29kZXIp
KTsKK30KKwordm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXJQYXJhbGxlbERlY29kZXIoKQogewogICAg
IEFTU0VSVChtX29ic2VydmVyKTsKKyAgICBtX3BhcmFsbGVsRGVjb2Rlci0+aW52YWxpZGF0ZSgp
OworICAgIG1fcGFyYWxsZWxEZWNvZGVyLmNsZWFyKCk7Cit9CisKK0ltYWdlRnJhbWVEYXRhIElt
YWdlU291cmNlOjpzZXJpYWxEZWNvZGUoc2l6ZV90IGluZGV4KQoreworICAgIGJvb2wgcGFyYWxs
ZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZTsKKyAgICAvLyBSZW5kZXJJbWFnZSBhbmQgQ2FudmFz
RWxlbWVudCBjYW4gc2hhcmUgdGhlIHNhbWUgQ2FjaGVkSW1hZ2UuCisgICAgaWYgKG1fcGFyYWxs
ZWxEZWNvZGVyLmdldCgpKSB7CisgICAgICAgIEFTU0VSVChtX29ic2VydmVyKTsKKyAgICAgICAg
Y2xlYXJQYXJhbGxlbERlY29kZXIoKTsKKyAgICAgICAgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQg
PSB0cnVlOworICAgIH0KKwogICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gY3Jl
YXRlRnJhbWVBdEluZGV4KGluZGV4KTsKLSAgICBtX29ic2VydmVyLT5kaWRSZWNlaXZlRnJhbWVB
dEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSk7CisKKyAgICBpZiAobV9vYnNlcnZlcikKKyAg
ICAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChpbmRleCwgaW1hZ2VGcmFt
ZURhdGEsIGZhbHNlIC8qIHJldGFpbmVkTW9kZSAqLywgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQp
OworCisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOwogfQogCiBJbWFnZUZyYW1lRGF0YSBJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKKyAgICBBU1NFUlQo
IW1fcGFyYWxsZWxEZWNvZGVyKTsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJu
IEltYWdlRnJhbWVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCmluZGV4IDJlNjRkN2RlYTczNzM0ZTdmNzA4YWY2MGQyOWEzMWI4NDEy
ZjE4MDkuLmM0Mjc5ZWM5ZmNhZGQ0MzQyNWQzMzJiZGQ4MzliYjU1Y2M1MjRhOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMjksNiAr
MjksOSBAQAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0
aW9uLmgiCisjaWYgIVVTRShDRykKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2Vy
dmVyLmgiCisjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CkBAIC02NSw2ICs2OCw5IEBAIGNsYXNzIEltYWdlT3JpZW50YXRpb247
CiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyOwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRT
aXplOworI2lmICFVU0UoQ0cpCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2RlcjsKKyNlbmRpZgog
Y2xhc3MgU2hhcmVkQnVmZmVyOwogCiAjaWYgVVNFKENHKQpAQCAtMTQzLDcgKzE0OSwxMSBAQCBj
b25zdCBpbnQgY0FuaW1hdGlvbkxvb3BPbmNlID0gMDsKIGNvbnN0IGludCBjQW5pbWF0aW9uTG9v
cEluZmluaXRlID0gLTE7CiBjb25zdCBpbnQgY0FuaW1hdGlvbk5vbmUgPSAtMjsKIAotY2xhc3Mg
SW1hZ2VTb3VyY2UgeworY2xhc3MgSW1hZ2VTb3VyY2UKKyNpZiAhVVNFKENHKQorICAgIDogcHVi
bGljIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIKKyNlbmRpZgorewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlU291cmNlKTsKIHB1YmxpYzoKICAgICBlbnVtIEFscGhhT3B0aW9u
IHsKQEAgLTIxMCwxNyArMjIwLDI0IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3Q7CiAKLSAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNh
bGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OworICAgIC8vIE5PVEU6IENhbGxlcnMg
c2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIg
aW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgdm9pZCBy
ZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCk7Ci0gICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJh
bWVBdEluZGV4KHNpemVfdCk7CisgICAgLy8gTk9URTogSWYgSW1hZ2VTb3VyY2UgaGFzIEltYWdl
U291cmNlT2JzZXJ2ZXIsIHRoaXMgbWV0aG9kIHNlbmRzIHRoZSByZXN1bHQgdmlhIGRpZERlY29k
ZSgpLgorICAgIC8vIE90aGVyd2lzZSwgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcmVzdWx0LiBl
LmcuIEdyYXBoaWNzQ29udGV4dDNECisgICAgSW1hZ2VGcmFtZURhdGEgcmVxdWVzdEZyYW1lQXRJ
bmRleChzaXplX3QsIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nID0gZmFsc2UpOwogCiAjaWYg
RU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICBzdGF0aWMgdW5zaWduZWQg
bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkgeyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNvZGVk
SW1hZ2U7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UodW5z
aWduZWQgbWF4UGl4ZWxzKSB7IHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gbWF4UGl4ZWxz
OyB9CiAjZW5kaWYKIAorI2lmICFVU0UoQ0cpCisgICAgLy8gUGFyYWxsZWxJbWFnZURlY29kZXJP
YnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBkaWREZWNvZGUoY29uc3QgSW1hZ2VGcmFtZURhdGEm
KTsKKyNlbmRpZgorCiBwcml2YXRlOgorICAgIEltYWdlRnJhbWVEYXRhIGNyZWF0ZUZyYW1lQXRJ
bmRleChzaXplX3QpOwogI2lmIFVTRShDRykKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hl
dGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgpAQCAtMjMzLDgg
KzI1MCwyMCBAQCBwcml2YXRlOgogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdElu
ZGV4KEltYWdlRnJhbWUqKSBjb25zdDsKICNlbmRpZgogCisjaWYgIVVTRShDRykKKyAgICB2b2lk
IGNyZWF0ZVBhcmFsbGVsRGVjb2RlcklmTmVlZGVkKCk7CisgICAgdm9pZCBjbGVhclBhcmFsbGVs
RGVjb2RlcigpOworICAgIGJvb2wgc2hvdWxkRGVjb2RlUGFyYWxsZWwoKTsKKyAgICBib29sIGZp
cnN0RnJhbWVJc0NvbXBsZXRlKCk7CisgICAgdm9pZCBwYXJhbGxlbERlY29kZSgpOworICAgIElt
YWdlRnJhbWVEYXRhIHNlcmlhbERlY29kZShzaXplX3QpOworCisgICAgUmVmUHRyPFBhcmFsbGVs
SW1hZ2VEZWNvZGVyPiBtX3BhcmFsbGVsRGVjb2RlcjsKKyNlbmRpZgorCiAgICAgTmF0aXZlSW1h
Z2VTb3VyY2VQdHIgbV9kZWNvZGVyOwogICAgIEltYWdlU291cmNlT2JzZXJ2ZXIqIG1fb2JzZXJ2
ZXI7CisKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9uOwogICAgIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb247CiAjaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaAppbmRleCA3MmFmNzA4YzdlY2Qx
MWY4MTZlOGE4ZTAyNzI5MDI2MDYwODIxNDI4Li5kMzIwNzgyZDhlODMwYzA0ZTk5ZjAxZTE0M2Zk
MjlhOTRhODMyMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEltYWdl
RnJhbWVEYXRhOwogLy8gSW50ZXJmYWNlIGZvciBub3RpZmljYXRpb24gYWJvdXQgY2hhbmdlcyB0
byBhbiBJbWFnZVNvdXJjZSwgaW5jbHVkaW5nIGRlY29kaW5nLgogY2xhc3MgSW1hZ2VTb3VyY2VP
YnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9v
bCByZXRhaW5lZCA9IGZhbHNlLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2Up
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkltYWdlU291cmNlT2JzZXJ2ZXIoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVs
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFs
bGVsSW1hZ2VEZWNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjljZmFmNTUzMTEzNzg0NTBkMzMxNDY0
MmVkMWM4ODM2OTQ3YTVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwCkBAIC0wLDAgKzEsMzA0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFn
ZURlY29kZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3Rm
L093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBQYXJhbGxlbEZyYW1lRGF0YTsKK3ZvaWQgZGlkRGVjb2Rl
VGFza0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVEYXRhKik7CitzdGF0aWMgSW1hZ2VGcmFtZURhdGEg
Y3JlYXRlSW1hZ2VGcmFtZURhdGEoUGFyYWxsZWxGcmFtZURhdGEqKTsKKworUGFyYWxsZWxJbWFn
ZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2
ZXIqIG9ic2VydmVyLCBJbWFnZURlY29kZXIqIGRlY29kZXIpCisgICAgOiBtX29ic2VydmVyKG9i
c2VydmVyKQorICAgICwgbV9pc0FsbERhdGFSZWNlaXZlZChmYWxzZSkKKyAgICAsIG1fYnl0ZXNP
ZkRhdGFDb25zdW1lZCgwKQorICAgICwgbV9pbWFnZURlY29kZXIoMCkKK3sKKyAgICBpbml0aWFs
aXplKGRlY29kZXIpOworfQorCitQYXJhbGxlbEltYWdlRGVjb2Rlcjo6flBhcmFsbGVsSW1hZ2VE
ZWNvZGVyKCkKK3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOworfQorCit2b2lkIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjppbml0aWFsaXplKEltYWdlRGVjb2RlciogZGVjb2RlcikKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChkZWNvZGVyLT5pc1NpemVBdmFpbGFibGUo
KSAmJiAhZGVjb2Rlci0+c2l6ZSgpLmlzRW1wdHkoKSk7CisKKyAgICBtX3NpemUgPSBkZWNvZGVy
LT5zaXplKCk7CisgICAgbV9maWxlbmFtZUV4dGVuc2lvbiA9IGRlY29kZXItPmZpbGVuYW1lRXh0
ZW5zaW9uKCk7CisKKyAgICBzZXREYXRhKGRlY29kZXItPmRhdGEoKSwgZGVjb2Rlci0+aXNBbGxE
YXRhUmVjZWl2ZWQoKSk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gMDsKKworICAgIG1f
aW1hZ2VGcmFtZS5zZXRTaXplKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworCisg
ICAgbV9pbWFnZURlY29kZXIgPSBkZWNvZGVyOworICAgIG1faW1hZ2VEZWNvZGVyLT5zZXREYXRh
KDAsIGZhbHNlKTsKKyAgICAvLyBBZnRlciB0aGlzIGxpbmUsIGl0IGlzIGlsbGVnYWwgZm9yIHRo
ZSBtYWluIHRocmVhZCB0byBhY2Nlc3MgbV9pbWFnZURlY29kZXIuCisKKyAgICAvLyBUaGlzIG11
c3QgYmUgdGhlIGxhc3QgbGluZSBiZWNhdXNlIEltYWdlRGVjb2RlV29ya2VyIGd1YXJhbnRlZXMK
KyAgICAvLyB0aGUgdmlzaWJpbGl0eSBvZiBtZW1iZXJzIGluIHRoZSB0YXNrIHRocmVhZC4KKyAg
ICBtX2RlY29kZVdvcmtlciA9IEltYWdlRGVjb2RlV29ya2VyOjphY3F1aXJlU2hhcmVkV29ya2Vy
KCk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUoKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVyKTsKKwor
ICAgIGlmIChtX2RlY29kZVdvcmtlci5nZXQoKSkgeworICAgICAgICBtX2RlY29kZVdvcmtlci0+
aW52YWxpZGF0ZSgpOworICAgICAgICBtX2RlY29kZVdvcmtlci5jbGVhcigpOworICAgIH0KKyAg
ICAvLyBUaGUgbWFpbiB0aHJlYWQgY2FuIHVzZSBtX2ltYWdlRGVjb2RlciBiZWNhdXNlIG90aGVy
IHRocmVhZHMgZG8gbm90IGFjY2VzcyBtX2ltYWdlRGVjb2RlciBhZnRlciB0aGlzIGxpbmUuCisK
KyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCksIG1faXNBbGxEYXRhUmVj
ZWl2ZWQpOworCisgICAgbV9zaXplID0gSW50U2l6ZSgpOworICAgIG1fZmlsZW5hbWVFeHRlbnNp
b24gPSAiIjsKKworICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBmYWxzZTsKKyAgICBtX2RhdGEu
Y2xlYXIoKTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZy
YW1lID0gSW1hZ2VGcmFtZSgpOworCisgICAgaWYgKG1fZGF0YUZvclRhc2suZ2V0KCkpCisgICAg
ICAgIG1fZGF0YUZvclRhc2suY2xlYXIoKTsKKworICAgIG1faW1hZ2VEZWNvZGVyID0gMDsKK30K
Kwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKKyAgICBtX2RhdGEgPSBk
YXRhOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkZWNvZGUoKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVyKTsKKyAgICBB
U1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkpOworCisgICAgT3duUHRyPEVuY29kZWREYXRhU2VnbWVu
dD4gc2VnbWVudCA9IGV4dHJhY3RTZWdtZW50Rm9yVGFzaygpOworICAgIGlmICghc2VnbWVudC5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGVjb2RlV29ya2VyLT5wb3N0VGFzayhiaW5k
KCZQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGVjb2RlVGFzaywgdGhpcywgc2VnbWVudC5yZWxlYXNl
KCkpKTsKK30KKworUGFzc093blB0cjxQYXJhbGxlbEltYWdlRGVjb2Rlcjo6RW5jb2RlZERhdGFT
ZWdtZW50PiBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCkKK3sK
KyAgICBBU1NFUlQobV9ieXRlc09mRGF0YUNvbnN1bWVkID49IDAgJiYgbV9ieXRlc09mRGF0YUNv
bnN1bWVkIDw9IG1fZGF0YS0+c2l6ZSgpKTsKKworICAgIGludCBzaXplT2ZTZWdtZW50ID0gbV9k
YXRhLT5zaXplKCkgLSBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7CisgICAgaWYgKCFzaXplT2ZTZWdt
ZW50KQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+KCk7CisK
KyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50KGFkb3B0UHRyKG5ldyBFbmNv
ZGVkRGF0YVNlZ21lbnQoKSkpOworICAgIGNvbnN0IGNoYXIqIHNyY1B0ciA9IG1fZGF0YS0+ZGF0
YSgpICsgbV9ieXRlc09mRGF0YUNvbnN1bWVkOworICAgIHNlZ21lbnQtPm1fc2VnbWVudC5hcHBl
bmQoc3JjUHRyLCBzaXplT2ZTZWdtZW50KTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSBt
X2RhdGEtPnNpemUoKTsKKworICAgIHNlZ21lbnQtPm1faXNBbGxEYXRhUmVjZWl2ZWQgPSBtX2lz
QWxsRGF0YVJlY2VpdmVkOworCisgICAgcmV0dXJuIHNlZ21lbnQucmVsZWFzZSgpOworfQorCitz
dHJ1Y3QgUGFyYWxsZWxGcmFtZURhdGEgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhcmFs
bGVsRnJhbWVEYXRhKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBQYXJhbGxlbEZyYW1lRGF0YShQYXNzUmVmUHRyPFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyPiBwYXJhbGxlbERlY29kZXIpCisgICAgICAgIDogbV9wYXJhbGxlbERlY29kZXIocGFyYWxs
ZWxEZWNvZGVyKQorICAgICAgICAsIG1fZGVjb2RlZFNlZ21lbnQoKQorICAgICAgICAsIG1fc3Rh
dHVzKEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCisgICAgICAgICwgbV9oYXNBbHBoYShmYWxzZSkK
KyAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAg
flBhcmFsbGVsRnJhbWVEYXRhKCkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFBhcmFsbGVs
SW1hZ2VEZWNvZGVyPiBtX3BhcmFsbGVsRGVjb2RlcjsKKyAgICBPd25BcnJheVB0cjxJbWFnZUZy
YW1lOjpQaXhlbERhdGE+IG1fZGVjb2RlZFNlZ21lbnQ7CisgICAgSW1hZ2VGcmFtZTo6RnJhbWVT
dGF0dXMgbV9zdGF0dXM7CisgICAgYm9vbCBtX2hhc0FscGhhOworICAgIGJvb2wgbV9wcmVtdWx0
aXBseUFscGhhOworICAgIEludFJlY3QgbV9kZWNvZGVkUmVjdDsKK307CisKK3ZvaWQgUGFyYWxs
ZWxJbWFnZURlY29kZXI6OmRlY29kZVRhc2soUGFzc093blB0cjxQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6RW5jb2RlZERhdGFTZWdtZW50PiBwYXNzU2VnbWVudCkKK3sKKyAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgT3duUHRyPEVu
Y29kZWREYXRhU2VnbWVudD4gc2VnbWVudCA9IHBhc3NTZWdtZW50OworCisgICAgLy8gMS4gU2Vu
ZCBzZWdtZW50IGRhdGEgdG8gSW1hZ2VEZWNvZGVyLgorICAgIGlmICghbV9kYXRhRm9yVGFzaykg
eworICAgICAgICBtX2RhdGFGb3JUYXNrID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyNpZm5k
ZWYgTkRFQlVHCisgICAgICAgIC8vIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIgZG9lcyBub3Qg
YWxsb3cgdHdvIHRocmVhZHMgdG8gYWNjZXNzIG9uZSBSZWZDb3VudGVkIG9iamVjdC4KKyAgICAg
ICAgLy8gbV9kYXRhRm9yVGFzayBpcyB1c2VkIGJ5IGJvdGggdGhlIG1haW4gdGhyZWFkIGFuZCB0
aGUgdGFzayB0aHJlYWQ6CisgICAgICAgIC8vIFRoZSB0YXNrIHRocmVhZCBjcmVhdGVzLCB1c2Vz
IGFuZCByZW1vdmVzIG1fZGF0YUZvclRhc2suIFRoZSBtYWluIHRocmVhZCBtYXkgcmVtb3ZlCisg
ICAgICAgIC8vIG1fZGF0YUZvclRhc2sgaWYgdGhlIHRhc2sgdGhyZWFkIGNvdWxkIG5vdCByZW1v
dmUgbV9kYXRhRm9yVGFzay4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gUGFyYWxsZWwgaW1hZ2Ug
ZGVjb2RlcnMgbWFuYWdlIG1fZGF0YUZvclRhc2sgaW4gYSB0aHJlYWQtc2FmZSB3YXkuIEhvd2V2
ZXIsCisgICAgICAgIC8vIHdlIGNhbid0IHRlbGwgdGhlIHZlcmlmaWVyIHRoYXQgd2UgYXJlIHNh
ZmUgYnkgc2ltcGx5IHBhc3NpbmcgYSBtdXRleAorICAgICAgICAvLyBiZWNhdXNlIGxpYmRpc3Bh
dGNoIGRvZXMgbm90IGV2ZW4gZ3VhcmFudGVlIGRlY29kZVRhc2sgaXMgY2FsbGVkIGJ5IHRoZSBz
YW1lIHRocmVhZAorICAgICAgICAvLyBlYWNoIHRpbWUuIFNvIHR1cm4gb2ZmIHRoZSB2ZXJpZmll
ciBoZXJlLgorICAgICAgICBtX2RhdGFGb3JUYXNrLT50dXJuT2ZmVmVyaWZpZXIoKTsKKyNlbmRp
ZgorICAgIH0KKyAgICBtX2RhdGFGb3JUYXNrLT5hcHBlbmQoc2VnbWVudC0+bV9zZWdtZW50KTsK
KyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YShtX2RhdGFGb3JUYXNrLmdldCgpLCBzZWdtZW50
LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKworICAgIEltYWdlRnJhbWUqIG9sZEJ1ZmZlciA9IG1f
aW1hZ2VEZWNvZGVyLT5maXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2RlKCk7CisgICAgaW50IGxh
c3REZWNvZGVkUm93ID0gb2xkQnVmZmVyID8gb2xkQnVmZmVyLT5sYXN0RGVjb2RlZFJvdygpIDog
MDsKKworICAgIC8vIDIuIERlY29kZSBhbiBpbWFnZSBpbmNyZW1lbnRhbGx5LgorICAgIEltYWdl
RnJhbWUqIGJ1ZmZlciA9IG1faW1hZ2VEZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCk7Cisg
ICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVt
cHR5KSB7CisgICAgICAgIEFTU0VSVCghc2VnbWVudC0+bV9pc0FsbERhdGFSZWNlaXZlZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAzLiBNYWtlIGEgUGFyYWxsZWxGcmFtZURh
dGEgaW4gb3JkZXIgdG8gcGFzcyBpdCB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgUGFyYWxsZWxG
cmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhID0gbmV3IFBhcmFsbGVsRnJhbWVEYXRhKHRoaXMp
OworICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyA9IGJ1ZmZlci0+c3RhdHVzKCk7Cisg
ICAgcGFyYWxsZWxGcmFtZURhdGEtPm1faGFzQWxwaGEgPSBidWZmZXItPmhhc0FscGhhKCk7Cisg
ICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fcHJlbXVsdGlwbHlBbHBoYSA9IGJ1ZmZlci0+cHJlbXVs
dGlwbHlBbHBoYSgpOworCisgICAgaW50IG5ld0xhc3REZWNvZGVkUm93ID0gYnVmZmVyLT5sYXN0
RGVjb2RlZFJvdygpOworICAgIC8vIE9ubHkgaW4gQk1QLCBsYXN0RGVjb2RlZFJvdyBjYW4gYmUg
YmlnZ2VyIHRoYW4gbmV3TGFzdERlY29kZWRSb3cuCisgICAgaW50IGxhc3REZWNvZGVkTWluUm93
ID0gc3RkOjptaW4obGFzdERlY29kZWRSb3csIG5ld0xhc3REZWNvZGVkUm93KTsKKyAgICBpbnQg
bGFzdERlY29kZWRNYXhSb3cgPSBzdGQ6Om1heChsYXN0RGVjb2RlZFJvdywgbmV3TGFzdERlY29k
ZWRSb3cpOworICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0ID0gSW50UmVjdCgw
LCBsYXN0RGVjb2RlZE1pblJvdywgbV9pbWFnZURlY29kZXItPnNpemUoKS53aWR0aCgpLCBsYXN0
RGVjb2RlZE1heFJvdyAtIGxhc3REZWNvZGVkTWluUm93ICsgMSk7CisKKyAgICAvLyA0LiBDcmVh
dGUgZGVjb2RlZCBzZWdtZW50IGRhdGEgaW4gb3JkZXIgdG8gcGFzcyBpdCB0byB0aGUgbWFpbiB0
aHJlYWQuCisgICAgLy8gICAgSWYgdGhlIHN0YXR1cyBpcyBGcmFtZUNvbXBsZXRlLCB0aGlzIGlz
IG5vdCBuZWVkZWQgYmVjYXVzZSBhIE5hdGl2ZUltYWdlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0
aGUgZGVjb2RlciBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgaWYgKHBhcmFsbGVsRnJhbWVEYXRh
LT5tX3N0YXR1cyA9PSBJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwpIHsKKyAgICAgICAgaW50IHNl
Z21lbnRTaXplID0gcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFJlY3Quc2l6ZSgpLmFyZWEo
KTsKKyAgICAgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFNlZ21lbnQgPSBhZG9wdEFy
cmF5UHRyKG5ldyBJbWFnZUZyYW1lOjpQaXhlbERhdGFbc2VnbWVudFNpemVdKTsKKworICAgICAg
ICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIHNlZ21lbnRBZGRyID0gcGFyYWxsZWxGcmFtZURhdGEt
Pm1fZGVjb2RlZFNlZ21lbnQuZ2V0KCk7CisgICAgICAgIG1lbWNweShzZWdtZW50QWRkciwgYnVm
ZmVyLT5nZXRBZGRyKDAsIGxhc3REZWNvZGVkTWluUm93KSwgc2VnbWVudFNpemUgKiBzaXplb2Yo
SW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSk7CisgICAgfSBlbHNlIHsgLy8gRnJhbWVDb21wbGV0ZQor
ICAgICAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YSgwLCBmYWxzZSk7CisgICAgICAgIG1fZGF0
YUZvclRhc2suY2xlYXIoKTsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoZGlk
RGVjb2RlVGFza0NhbGxiYWNrLCBwYXJhbGxlbEZyYW1lRGF0YSkpOworfQorCit2b2lkIGRpZERl
Y29kZVRhc2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBJZiBhIGNsaWVudCBjYWxsZWQg
UGFyYWxsZWxJbWFnZURlY29kZXI6OmNsZWFyKCksIFBhcmFsbGVsSW1hZ2VEZWNvZGVyIGlzIGlu
dmFsaWRhdGVkLgorICAgIGlmIChwYXJhbGxlbEZyYW1lRGF0YS0+bV9wYXJhbGxlbERlY29kZXIt
PnZhbGlkKCkpCisgICAgICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX3BhcmFsbGVsRGVjb2Rlci0+
ZGlkRGVjb2RlVGFzayhwYXJhbGxlbEZyYW1lRGF0YSk7CisgICAgZGVsZXRlIHBhcmFsbGVsRnJh
bWVEYXRhOworfQorCitJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFnZUZyYW1lRGF0YShQYXJhbGxl
bEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgSW1hZ2VGcmFtZURhdGEgaW1h
Z2VGcmFtZURhdGE7CisgICAgaW1hZ2VGcmFtZURhdGEubV9vcmllbnRhdGlvbiA9IERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uOworICAgIGltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSA9IHBhcmFs
bGVsRnJhbWVEYXRhLT5tX3N0YXR1cyA9PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAg
IGltYWdlRnJhbWVEYXRhLm1faGFzQWxwaGEgPSAhaW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRl
IHx8IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhhOworICAgIHJldHVybiBpbWFnZUZyYW1l
RGF0YTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayhQYXJh
bGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQocGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzICE9IEltYWdl
RnJhbWU6OkZyYW1lRW1wdHkpOworCisgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEg
PSBjcmVhdGVJbWFnZUZyYW1lRGF0YShwYXJhbGxlbEZyYW1lRGF0YSk7CisKKyAgICBpZiAoIWlt
YWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKKyAgICAgICAgZGlkRGVjb2RlUGFydGlhbChpbWFn
ZUZyYW1lRGF0YSwgcGFyYWxsZWxGcmFtZURhdGEpOworICAgIGVsc2UKKyAgICAgICAgZGlkRGVj
b2RlQ29tcGxldGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyOjpkaWREZWNvZGVQYXJ0aWFsKEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1lRGF0YSwgUGFy
YWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBhcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShwYXJhbGxlbEZy
YW1lRGF0YSk7CisgICAgc3luY0ltYWdlRnJhbWUocGFyYWxsZWxGcmFtZURhdGEpOworCisgICAg
aW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9IG1faW1hZ2VGcmFtZS5hc05ld05hdGl2ZUltYWdlKCk7
CisgICAgbV9vYnNlcnZlci0+ZGlkRGVjb2RlKGltYWdlRnJhbWVEYXRhKTsKK30KKwordm9pZCBQ
YXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUoUGFyYWxs
ZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIGNvbnN0IEltYWdlRnJhbWU6
OlBpeGVsRGF0YSogY29uc3Qgc2VnbWVudEFkZHIgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNv
ZGVkU2VnbWVudC5nZXQoKTsKKyAgICBpbnQgc2VnbWVudFNpemUgPSBwYXJhbGxlbEZyYW1lRGF0
YS0+bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0
YSogZGVzdEFkZHIgPSBtX2ltYWdlRnJhbWUuZ2V0QWRkcigwLCBwYXJhbGxlbEZyYW1lRGF0YS0+
bV9kZWNvZGVkUmVjdC55KCkpOworICAgIG1lbWNweShkZXN0QWRkciwgc2VnbWVudEFkZHIsIHNl
Z21lbnRTaXplICogc2l6ZW9mKEltYWdlRnJhbWU6OlBpeGVsRGF0YSkpOworfQorCit2b2lkIFBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpzeW5jSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSogcGFy
YWxsZWxGcmFtZURhdGEpCit7CisgICAgLy8gVGhlIGZvbGxvd2luZyBsaW5lcyBhcmUgbmVlZGVk
IHRvIGNyZWF0ZSBhIHZhbGlkIG5hdGl2ZSBpbWFnZSBpbiBJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKCkuCisgICAgbV9pbWFnZUZyYW1lLnNldFN0YXR1cyhwYXJhbGxlbEZyYW1lRGF0YS0+
bV9zdGF0dXMpOworICAgIG1faW1hZ2VGcmFtZS5zZXRIYXNBbHBoYShwYXJhbGxlbEZyYW1lRGF0
YS0+bV9oYXNBbHBoYSk7CisgICAgbV9pbWFnZUZyYW1lLnNldFByZW11bHRpcGx5QWxwaGEocGFy
YWxsZWxGcmFtZURhdGEtPm1fcHJlbXVsdGlwbHlBbHBoYSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJ
bWFnZURlY29kZXI6OmRpZERlY29kZUNvbXBsZXRlKEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1l
RGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgbV9kZWNvZGVXb3Jr
ZXItPmludmFsaWRhdGUoKTsKKyAgICBtX2RlY29kZVdvcmtlci5jbGVhcigpOworICAgIC8vIFRo
ZSBtYWluIHRocmVhZCBjYW4gdXNlIG1faW1hZ2VEZWNvZGVyIGJlY2F1c2Ugb3RoZXIgdGhyZWFk
cyBkbyBub3QgYWNjZXNzIG1faW1hZ2VEZWNvZGVyIGFmdGVyIHRoaXMgbGluZS4KKworICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1faW1hZ2VEZWNvZGVyLT5maXJzdEltYWdlRnJhbWVXaXRob3V0
RGVjb2RlKCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAgICBpbWFnZUZyYW1lRGF0YS5tX2Zy
YW1lID0gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CisgICAgbV9vYnNlcnZlci0+ZGlkRGVj
b2RlKGltYWdlRnJhbWVEYXRhKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJm
MGEzOGFiNzgzMGJlNDdmYmYwMTlmNzcwMmZkMDMyZDU3OGY2NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmgK
QEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFyYWxsZWxJbWFnZURl
Y29kZXJfaAorI2RlZmluZSBQYXJhbGxlbEltYWdlRGVjb2Rlcl9oCisKKyNpbmNsdWRlICJJbWFn
ZURlY29kZVdvcmtlci5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlBh
cmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CitjbGFz
cyBQYXJhbGxlbEZyYW1lRGF0YTsKKworY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGFyYWxsZWxJbWFnZURlY29kZXI+IHsKK3B1YmxpYzoK
KyAgICBQYXJhbGxlbEltYWdlRGVjb2RlcihQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyKiwg
SW1hZ2VEZWNvZGVyKik7CisgICAgflBhcmFsbGVsSW1hZ2VEZWNvZGVyKCk7CisKKyAgICB2b2lk
IGludmFsaWRhdGUoKTsKKworICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CisKKyAgICB2b2lkIGRlY29kZSgpOworCisgICAgaW5saW5lIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZW5hbWVFeHRlbnNpb247
IH0KKyAgICBpbmxpbmUgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisK
K3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplKEltYWdlRGVjb2RlciopOworCisgICAgaW5s
aW5lIGJvb2wgdmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlRGVjb2RlcjsgfQorCisgICAg
c3RydWN0IEVuY29kZWREYXRhU2VnbWVudCB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEVuY29kZWREYXRhU2VnbWVudCk7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgRW5jb2RlZERhdGFTZWdtZW50KCkgeyB9CisgICAgICAgIFZl
Y3RvcjxjaGFyPiBtX3NlZ21lbnQ7CisgICAgICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZDsK
KyAgICB9OworCisgICAgUGFzc093blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+IGV4dHJhY3RTZWdt
ZW50Rm9yVGFzaygpOworCisgICAgLy8gT25seSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhl
IHRhc2sgdGhyZWFkLgorICAgIHZvaWQgZGVjb2RlVGFzayhQYXNzT3duUHRyPEVuY29kZWREYXRh
U2VnbWVudD4pOworCisgICAgdm9pZCBkaWREZWNvZGVUYXNrKFBhcmFsbGVsRnJhbWVEYXRhKik7
CisgICAgdm9pZCBkaWREZWNvZGVQYXJ0aWFsKEltYWdlRnJhbWVEYXRhJiwgUGFyYWxsZWxGcmFt
ZURhdGEqKTsKKyAgICB2b2lkIGFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKFBhcmFsbGVs
RnJhbWVEYXRhKik7CisgICAgdm9pZCBzeW5jSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSop
OworICAgIHZvaWQgZGlkRGVjb2RlQ29tcGxldGUoSW1hZ2VGcmFtZURhdGEmKTsKKyAgICBmcmll
bmQgdm9pZCBkaWREZWNvZGVUYXNrQ2FsbGJhY2soUGFyYWxsZWxGcmFtZURhdGEqKTsKKworICAg
IFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7CisKKyAgICBJbnRTaXpl
IG1fc2l6ZTsKKyAgICBTdHJpbmcgbV9maWxlbmFtZUV4dGVuc2lvbjsKKworICAgIC8vIEZvciBp
bnB1dCBkYXRhCisgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBpbnQgbV9ieXRlc09mRGF0YUNvbnN1bWVkOworCisgICAg
Ly8gRm9yIG91dHB1dCBkYXRhCisgICAgSW1hZ2VGcmFtZSBtX2ltYWdlRnJhbWU7CisKKyAgICAv
LyBUaGUgdGFzayB0aHJlYWQgY2FuIGFjY2VzcyBvbmx5IG1fZGF0YUZvclRhc2sgYW5kIG1faW1h
Z2VEZWNvZGVyLgorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUZvclRhc2s7CisKKyAg
ICBJbWFnZURlY29kZXIqIG1faW1hZ2VEZWNvZGVyOworCisgICAgUmVmUHRyPEltYWdlRGVjb2Rl
V29ya2VyPiBtX2RlY29kZVdvcmtlcjsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
cmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTdlMTk3
MDVlMWUyOWM1ZjM5YWRiZGNiZTk3Nzc4YTE4MWQ4ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZl
ci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAx
MDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyT2JzZXJ2ZXJfaAorI2RlZmluZSBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUZyYW1lRGF0YTsKKworLy8g
SW50ZXJmYWNlIGZvciBub3RpZmljYXRpb24gYWJvdXQgZGVjb2RpbmcgY29tcGxldGlvbiBvZiBh
biBQYXJhbGxlbEltYWdlRGVjb2Rlci4KK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBkaWREZWNvZGUoY29uc3QgSW1hZ2VGcmFt
ZURhdGEmKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5QYXJhbGxlbEltYWdlRGVj
b2Rlck9ic2VydmVyKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA5YmFiNjY1NTdlMWY3MTQyODcxMGQzNWU4NThmNTkzYmU4ZGRkYmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
aCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGFzc1JlZlB0cjxSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZT4gUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6OmNyZWF0ZShCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShiaXRtYXBJbWFnZSkpOworfQorCitSZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoQml0bWFwSW1hZ2Uq
IGJpdG1hcEltYWdlKQorICAgIDogbV9iaXRtYXBJbWFnZShiaXRtYXBJbWFnZSkKKyAgICAsIG1f
cmV0YWluZWRNb2RlQ291bnQoMCkKK3sKK30KKworYm9vbCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNh
dmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5o
YXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOworfQorCitJbnRTaXplIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1v
ZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+c2l6ZSgpOworfQorCiti
b29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpnZXRIb3RTcG90KEludFBvaW50JiBwb2ludCkg
Y29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsK
KyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+Z2V0SG90U3BvdChwb2ludCk7Cit9CisKK2Jvb2wg
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAg
IHJldHVybiBtX2JpdG1hcEltYWdlLT5kYXRhQ2hhbmdlZChhbGxEYXRhUmVjZWl2ZWQpOworfQor
CitTdHJpbmcgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAg
ICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKK30KKwordm9pZCBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFs
bCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAg
ICBtX2JpdG1hcEltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEoZGVzdHJveUFsbCk7Cit9CisKK3Vu
c2lnbmVkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZWNvZGVkU2l6ZSgpIGNvbnN0Cit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJu
IG1fYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJvb2wgY2F0Y2hVcElmTmVjZXNzYXJ5KQoreworICAg
IFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFw
SW1hZ2UtPnN0YXJ0QW5pbWF0aW9uKGNhdGNoVXBJZk5lY2Vzc2FyeSk7Cit9CisKK3ZvaWQgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24oKQoreworICAgIFJldGFpbmVkTW9k
ZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1hZ2UtPnN0b3BB
bmltYXRpb24oKTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6cmVzZXRBbmlt
YXRpb24oKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMp
OworICAgIG1fYml0bWFwSW1hZ2UtPnJlc2V0QW5pbWF0aW9uKCk7Cit9CisKK05hdGl2ZUltYWdl
UHRyIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
cmV0dXJuIG1fYml0bWFwSW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cit9CisK
K2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0FscGhhKCkKK3sK
KyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1
cm4gbV9iaXRtYXBJbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsKK30KKworYm9vbCBSZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSgpCit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKTsKK30KKwordm9pZCBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit7CisgICAgUmV0YWluZWRNb2RlU2F2
ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+ZHJhdyhjb250
ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKK30KKworYm9vbCBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkKK3sKKyAgICBS
ZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9i
aXRtYXBJbWFnZS0+bWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7Cit9CisKK0NvbG9yIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVT
YXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+
c29saWRDb2xvcigpOworfQorCitSZXRhaW5lZE1vZGVTYXZlcjo6UmV0YWluZWRNb2RlU2F2ZXIo
Y29uc3QgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UqIGltYWdlLCBib29sIHJldGFpbmVkKQorICAg
IDogbV9pbWFnZShpbWFnZSkKKyAgICAsIG1fcmV0YWluZWQocmV0YWluZWQpCit7CisgICAgaWYg
KG1fcmV0YWluZWQpCisgICAgICAgIG1faW1hZ2UtPmJlZ2luUmV0YWluZWRNb2RlKCk7Cit9CisK
K1JldGFpbmVkTW9kZVNhdmVyOjp+UmV0YWluZWRNb2RlU2F2ZXIoKQoreworICAgIGlmIChtX3Jl
dGFpbmVkKQorICAgICAgICBtX2ltYWdlLT5lbmRSZXRhaW5lZE1vZGUoKTsKK30KKworUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqIGltYWdl
KQoreworICAgIEFTU0VSVChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKTsKKworICAgIEJpdG1hcElt
YWdlKiBiaXRtYXBJbWFnZSA9IHN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpOworICAg
IGlmICghYml0bWFwSW1hZ2UtPm1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0KCkpCisgICAgICAgIGJp
dG1hcEltYWdlLT5tX3JldGFpbmVkTW9kZUltYWdlID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6
OmNyZWF0ZShiaXRtYXBJbWFnZSk7CisKKyAgICByZXR1cm4gYml0bWFwSW1hZ2UtPm1fcmV0YWlu
ZWRNb2RlSW1hZ2UuZ2V0KCk7Cit9CisKK0ltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdl
SWZQb3NzaWJsZShJbWFnZSogaW1hZ2UpCit7CisgICAgaWYgKGltYWdlICYmIGltYWdlLT5pc0Jp
dG1hcEltYWdlKCkpCisgICAgICAgIHJldHVybiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKGlt
YWdlKTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjMzZTdhOGMzODU1NzMwY2U5Yzk5YWUxOWYxMzgwOWRhZmNmODU3ZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZV9oCisjZGVmaW5lIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
X2gKKworI2luY2x1ZGUgIkltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Qml0bWFwSW1hZ2U7CitjbGFzcyBSZXRhaW5lZE1vZGVTYXZlcjsKKworY2xhc3MgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgeworICAgIGZyaWVuZCBjbGFzcyBSZXRhaW5l
ZE1vZGVTYXZlcjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZT4gY3JlYXRlKEJpdG1hcEltYWdlKik7CisKKyAgICB2aXJ0dWFsIH5SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZSgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIGJvb2wgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZpcnR1YWwg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpOworICAgIHZpcnR1YWwgdW5z
aWduZWQgZGVjb2RlZFNpemUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydEFuaW1h
dGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSA9IHRydWUpOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7CisKKyAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisKKyAgICBib29sIGN1cnJl
bnRGcmFtZUlzQ29tcGxldGUoKTsKKworICAgIGlubGluZSBib29sIHJldGFpbmVkTW9kZVJlbmRl
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmV0YWluZWRNb2RlQ291bnQ7IH0KKworcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgdmlydHVhbCBib29sIG1heUZpbGxX
aXRoU29saWRDb2xvcigpOworICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKEJpdG1hcElt
YWdlKik7CisKKyAgICBpbmxpbmUgdm9pZCBiZWdpblJldGFpbmVkTW9kZSgpIGNvbnN0IHsgbV9y
ZXRhaW5lZE1vZGVDb3VudCsrOyB9CisgICAgaW5saW5lIHZvaWQgZW5kUmV0YWluZWRNb2RlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIG1fcmV0YWluZWRNb2RlQ291bnQtLTsKKyAgICAgICAgQVNT
RVJUKG1fcmV0YWluZWRNb2RlQ291bnQgPj0gMCk7CisgICAgfQorCisgICAgQml0bWFwSW1hZ2Uq
IG1fYml0bWFwSW1hZ2U7CisgICAgbXV0YWJsZSBpbnQgbV9yZXRhaW5lZE1vZGVDb3VudDsKK307
CisKK2NsYXNzIFJldGFpbmVkTW9kZVNhdmVyIHsKK3B1YmxpYzoKKyAgICBSZXRhaW5lZE1vZGVT
YXZlcihjb25zdCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSosIGJvb2wgcmV0YWluZWQgPSB0cnVl
KTsKKyAgICB+UmV0YWluZWRNb2RlU2F2ZXIoKTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBSZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZSogbV9pbWFnZTsKKyAgICBib29sIG1fcmV0YWluZWQ7Cit9Owor
CisKK1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKElt
YWdlKik7CitJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUoSW1hZ2Uq
KTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggZGM2YTRkNGJjYjcy
YzZhZTczNGZlNzM5YThjNGNlN2Q1NjQxNWY0Ny4uZDA2YjFmNzdiZmRhNTkzNGJlZDc2Y2UxOTI5
NzBhMmM0YzI4MTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTU4LDYgKzU4LDcgQEAg
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1f
c2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwg
bV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Ug
PSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNw
cAppbmRleCAyNTQyY2Y4ZmE5MWQwYjhhNzE0Mzg1YTRlMzAyMzk2NzgzZDk2MWRkLi5iNzQyNWE5
ZTgxNmZiM2JlZWRiMzJlMDA3ZDdkMmI4ZDMxNTEyZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRENhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVk
CiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRl
RnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUltYWdlRnJhbWVE
YXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJhbWVBdEluZGV4KDApOwogICAgICAgICBpZiAoIWltYWdl
SW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VDYWlybz4gbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihp
bWFnZUltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA3
ODBiYTQ0ZDg0MWE2MDA5OTM5ODhkYTIzMTQ2MzA4MjlkNDMzOTNkLi4zODdmMWVmNTJlZGU5MTM4
YTQwYWRkZGM5ZjZkNTc4NzU2Yzg1MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSog
aW1hZ2UsCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0
ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEg
PSBkZWNvZGVyLnJlcXVlc3RGcmFtZUF0SW5kZXgoMCk7CiAgICAgICAgIGRlY29kZWRJbWFnZS5h
ZG9wdENGKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgICAgICBjZ0ltYWdlID0gZGVjb2Rl
ZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA3M2NlZTIyMDVkNWYyZDk3MWI5ZGFhYWI2MzQz
NWVjZjUxOTAwYWYwLi40MDYzZGYwNTQ4YTE3YTA2MTAwYzYwN2ZkMmM3ODI5NGQ4MWJlZDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApA
QCAtODEsNiArODEsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0lt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAg
ICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQor
ICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJ
bWFnZUdldFdpZHRoKGNnSW1hZ2UpOwogICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhl
aWdodChjZ0ltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggYjQ0NTQ5OTNiNTI4N2M1NGZmNzRiMjliMGRl
MDMwNjI3NmFmYjQyNC4uZmE5YmMzZWQyMDMwMjVjYTgwMGM5YjNhYTcwYmQ1NWIzZmYyNmJhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkludFBvaW50
LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0zMDks
MTEgKzMxMCwxMiBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7
CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBib29sKQogewogICAgIEFTU0VSVChtX29ic2VydmVyKTsKICAgICBJbWFnZUZyYW1l
RGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CiAgICAgbV9v
YnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOwor
ICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0KIAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcAppbmRleCBj
ZDg3OTRlNTM5Y2ZkNTBlZTg4YTc3ZTA3YzQ1ZjgyYWI5Y2Q3MzUzLi45MDAwZmMzZGZiNWIzMDlj
ZGFmYWE5OTcxMjViN2I5NjM1ZWYzZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAKQEAgLTY3LDYgKzY3LDcg
QEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFRpbGVkSW1hZ2VPcGVuVkcqIHRpbGVkSW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAg
ICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQo
dHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2l6
ZS53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKG1fc2l6ZS5oZWlnaHQoKSA+IDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAppbmRleCBlNjc1
Y2Q0MmJmMzEwOTRlYWFiZWQxODEwODQwZTc4ZjBhMTY0MWIzLi45N2I1NjUyZjNkNDc5OTdmZGU0
ZTkxMTE4M2U4MDRhOWU2YTBmNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMjE0LDYgKzIxNCw3IEBAIEJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShRSW1hZ2UqIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAs
IG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9o
YXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAg
ICBpbnQgd2lkdGggPSBpbWFnZS0+d2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gaW1hZ2UtPmhl
aWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCmluZGV4IGY1NmQ3MjQ1YWQxMGVj
M2FlODViZWQ0MjcwOWU2ZjZiNDcyYjJjNTAuLjFmMDQ1OWM1NGFjNTA1ZmM3MmJkM2NiMDg2ZWFl
ZTI2ODhhNWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwK
ICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVB
dEluZGV4KDApOworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29k
ZXIucmVxdWVzdEZyYW1lQXRJbmRleCgwKTsKICAgICAgICAgaWYgKCFpbWFnZUZyYW1lRGF0YS5t
X2lzQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhh
ID0gaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKaW5kZXggYjdjMjQ5NmM3M2I1MjY1ZjFkODUzNGUz
MzdlZThjMjBmZTMwMjk4OS4uYjRiNTdiZTliYTM0MzA1ZDM0OWZiZjRjNGU1YjQ3Njc1ZmI4MzE0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VX
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5j
cHAKQEAgLTk1LDYgKzk1LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNvbnN0IHd4Qml0
bWFwJiBiaXRtYXApCiAgICAgLCBtX2RlY29kZWRTaXplKDApCiAgICAgLCBtX2hhdmVGcmFtZUNv
dW50KHRydWUpCiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUo
ZmFsc2UpCiB7CiAgICAgbV9kZWNvZGVkU2l6ZSA9IGJpdG1hcC5HZXRXaWR0aCgpICogYml0bWFw
LkdldEhlaWdodCgpICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKGJpdG1hcC5HZXRXaWR0aCgp
LCBiaXRtYXAuR2V0SGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzJiNWRkYzJkZTMxZDAw
NDA3MjdkNDRlOTUxNjJhZGY2YmFjNzZjNy4uOTA0Zjg2Njg2MzMyZGE4YzMyNmRkMGY2ZWI1N2Ji
NDU1Njc3NWQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0xNDAsNiArMTQwLDcgQEAgSW1hZ2VEZWNv
ZGVyKiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdl
U291cmNlOjpBbHBoYU8KIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCiAgICAgOiBtX2hhc0Fs
cGhhKGZhbHNlKQorICAgICwgbV9sYXN0RGVjb2RlZFJvdygwKQogICAgICwgbV9zdGF0dXMoRnJh
bWVFbXB0eSkKICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlz
cG9zZU5vdFNwZWNpZmllZCkKQEAgLTE2NSw2ICsxNjYsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNs
ZWFyUGl4ZWxEYXRhKCkKIHsKICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwogICAgIG1fYnl0
ZXMgPSAwOworICAgIG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVF
bXB0eTsKICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoKSBjYWxscyB0aGlzCiAgICAgLy8gdG8gZnJlZSB0aGUgYml0bWFw
IGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZSBpbml0RnJhbWVCdWZmZXIoKSBhbmQKQEAg
LTE4Nyw2ICsxODksNyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IElt
YWdlRnJhbWUmIG90aGVyKQogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAg
ICAgbV9zaXplID0gb3RoZXIubV9zaXplOwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxw
aGEpOworICAgIG1fbGFzdERlY29kZWRSb3cgPSBvdGhlci5tX2xhc3REZWNvZGVkUm93OwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpz
ZXRTaXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKICAgICBtX2JhY2tpbmdTdG9yZS5y
ZXNpemUoYmFja2luZ1N0b3JlU2l6ZSk7CiAgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRh
dGEoKTsKICAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIG1f
bGFzdERlY29kZWRSb3cgPSAwOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggOTExODc4ZTFkOTYyMjI2NDdlN2YzNDdlNzY2MmQyZmJl
ZjNmMDI4Yi4uMjcwM2U0ODhiOGU2OGE2ZTk2Y2RjYjVhYjJlOTU2ZTdhNTVhZGViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5h
dGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhh
c0FscGhhKCkgY29uc3Q7CisgICAgICAgIGludCBsYXN0RGVjb2RlZFJvdygpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdERlY29kZWRSb3c7IH0KICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxG
cmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CiAgICAgICAg
IEZyYW1lU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAg
IHVuc2lnbmVkIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQpAQCAtMTI1
LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVtdWx0aXBs
eUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAg
dm9pZCBzZXRIYXNBbHBoYShib29sIGFscGhhKTsKKyAgICAgICAgaW5saW5lIHZvaWQgc2V0TGFz
dERlY29kZWRSb3coaW50IGxhc3REZWNvZGVkUm93KSB7IG1fbGFzdERlY29kZWRSb3cgPSBsYXN0
RGVjb2RlZFJvdzsgfQogICAgICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclBy
b2ZpbGUmKTsKICAgICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0
JiByKSB7IG1fb3JpZ2luYWxGcmFtZVJlY3QgPSByOyB9CiAgICAgICAgIHZvaWQgc2V0U3RhdHVz
KEZyYW1lU3RhdHVzIHN0YXR1cyk7CkBAIC0xODEsNiArMTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnltb3Jl
PwogICAgICAgICBDb2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKKyAgICAgICAg
aW50IG1fbGFzdERlY29kZWRSb3c7CiAgICAgICAgIEludFJlY3QgbV9vcmlnaW5hbEZyYW1lUmVj
dDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgZXhjZXB0IGZvciBHSUYgZnJhbWVzIHdo
b3NlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVj
dCB3YXMgc21hbGxlciB0aGFuIHRoZQpAQCAtMjI4LDYgKzIzMSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7
CiAgICAgICAgIH0KIAorICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuZ2V0KCk7IH0KKwogICAgICAgICAvLyBMYXppbHktZGVjb2RlcyBlbm91Z2ggb2Yg
dGhlIGltYWdlIHRvIGdldCB0aGUgc2l6ZSAoaWYgcG9zc2libGUpLgogICAgICAgICAvLyBGSVhN
RTogUmlnaHQgbm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFjdG9y
IHRoZQogICAgICAgICAvLyBkZWNvZGUgY2FsbCBvdXQgYW5kIHVzZSBpdCBoZXJlLgpAQCAtMjc2
LDYgKzI4MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rl
ci1vd25lZCBwb2ludGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVy
QXRJbmRleChzaXplX3QpID0gMDsKIAorICAgICAgICAvLyBSZXR1cm5zIGFuIEltYWdlRGVjb2Rl
ci1vd25lZCBwb2ludGVyIHdpdGhvdXQgZGVjb2RpbmcgbW9yZS4KKyAgICAgICAgSW1hZ2VGcmFt
ZSogZmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpID8gMCA6ICZtX2ZyYW1lQnVmZmVy
Q2FjaGVbMF07CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29s
b3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxh
ZzsgfQogICAgICAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNr
YmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNmE2NWU2MTdkMTllNjdiZmEyMTgwNTM4
N2MxMTk1ZGE0ODIxZGI2ZC4uYmRjYWVmMDVlYTQwMTE1ZDA2Y2Y3MzVmMDkxOWFhYzRiMjE5ZWVl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxh
Y2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTcs
NiArMTU3LDcgQEAgaW50IEltYWdlUmVhZGVyOjpkZWNvZGUoc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCBJbWFnZUZyYW1lKiBhRnJhbWUpCiAgICAgICAgICAgICBhRnJhbWUtPnNldFJHQkEo
aSwgaiwgY3VyUHRyWzBdLCBjdXJQdHJbMV0sIGN1clB0clsyXSwgMjU1KTsKICAgICAgICAgICAg
IGN1clB0ciArPSAzOwogICAgICAgICB9CisgICAgICAgIGFGcmFtZS0+c2V0TGFzdERlY29kZWRS
b3coaik7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCAyMGEyNDhjN2QzYmNiMTFjYWQ3YzY3Njk1ZWI4Mjc1NzUyNzgyNDkzLi5mNzRkZGUz
YTBkZmZhYWI3OWIwNWFiNDM4YmQxZmY4ZmVhMmMyNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNjQsOCArNjQsMTUgQEAgdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogYm9vbCBCTVBJbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUo
KSkgeworICAgICAgICAvLyBPbmx5IEJNUEltYWdlRGVjb2RlciBtdXN0IG1ha2UgbV9mcmFtZUJ1
ZmZlckNhY2hlWzBdIGluIGlzU2l6ZUF2YWlsYWJsZSgpLAorICAgICAgICAvLyBiZWNhdXNlIHRo
ZSBkZWZhdWx0IHZhbHVlIG9mIEltYWdlRnJhbWU6Om1fbGFzdERlY29kZWRSb3cgY2FuIGJlICJo
ZWlnaHQgLSAxIi4KKyAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7CisgICAgICAgICAgICBt
X2ZyYW1lQnVmZmVyQ2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlw
bHlBbHBoYSk7CisgICAgICAgIH0KICAgICAgICAgZGVjb2RlKHRydWUpOworICAgIH0KIAogICAg
IHJldHVybiBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZVJlYWRlci5jcHAKaW5kZXggNWMwMDU1MzRlY2Q5MjEzNGExM2IzMjk1ODkyNzc5MGYwN2FkMGY4
MS4uNGY3ZTMxNzllNjY2MzM4YTNhMTE0YjFiMjJhMWUzNDk0ODM5NDU1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuY3BwCkBAIC02NCw4ICs2NCwxMSBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpk
ZWNvZGVCTVAoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
cHJvY2Vzc0luZm9IZWFkZXIoKSBzZXQgdGhlIHNpemUsIHNvIGlmIHRoYXQncyBhbGwgd2UgbmVl
ZGVkLCB3ZSdyZSBkb25lLgotICAgIGlmIChvbmx5U2l6ZSkKKyAgICBpZiAob25seVNpemUpIHsK
KyAgICAgICAgaWYgKCFtX2lzVG9wRG93bikKKyAgICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0
RGVjb2RlZFJvdyhtX3BhcmVudC0+c2l6ZSgpLmhlaWdodCgpIC0gMSk7CiAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KIAogICAgIC8vIFJlYWQgYW5kIHByb2Nlc3MgdGhlIGJpdG1hc2tzLCBp
ZiBuZWVkZWQuCiAgICAgaWYgKG1fbmVlZFRvUHJvY2Vzc0JpdG1hc2tzICYmICFwcm9jZXNzQml0
bWFza3MoKSkKQEAgLTYyNCw2ICs2MjcsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNz
UkxFRGF0YSgpCiAKICAgICAgICAgICAgICAgICBtX2RlY29kZWRPZmZzZXQgKz0gMjsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyhtX2Nvb3Jk
LnkoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03MTcsNiArNzIxLDcgQEAgQk1QSW1hZ2VS
ZWFkZXI6OlByb2Nlc3NpbmdSZXN1bHQgQk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NOb25STEVEYXRh
KGJvb2wgaW5STEUsIGkKICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudChwaXhl
bCwgMiksIGFscGhhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBtX2J1ZmZl
ci0+c2V0TGFzdERlY29kZWRSb3cobV9jb29yZC55KCkpOwogCiAgICAgICAgIC8vIFN1Y2Nlc3Ms
IGtlZXAgZ29pbmcuCiAgICAgICAgIG1fZGVjb2RlZE9mZnNldCArPSBwYWRkZWROdW1CeXRlczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggNWY2MTkzYjhmOWUxYmE5MzdiNmUzZmM3
MzE3NDkyNDM0ZGFhZTJkYS4uNzE5OGExMWMxZjE1NjgwMGM3YWJiMWZmZWE0MDFiMmM3NTkwODVi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTI0OSwxMCArMjQ5LDE0IEBAIGJv
b2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1
bnNpZ25lZCBjaGFyKiByb3dCdWZmCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoeCwg
eUJlZ2luLCAwLCAwLCAwLCAwKTsKICAgICAgICAgfQogICAgIH0KKyAgICBidWZmZXIuc2V0TGFz
dERlY29kZWRSb3coeUJlZ2luKTsKIAogICAgIC8vIFRlbGwgdGhlIGZyYW1lIHRvIGNvcHkgdGhl
IHJvdyBkYXRhIGlmIG5lZWQgYmUuCi0gICAgaWYgKHJlcGVhdENvdW50ID4gMSkKKyAgICBpZiAo
cmVwZWF0Q291bnQgPiAxKSB7CiAgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKHhCZWdpbiwg
eEVuZCwgeUJlZ2luLCB5RW5kKTsKKyAgICAgICAgQVNTRVJUKCh5RW5kIC0gMSkgPj0gMCk7Cisg
ICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5RW5kIC0gMSk7CisgICAgfQogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0zOTAsNiArMzk0LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6
OmluaXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgICBmb3Ig
KGludCB5ID0gcHJldlJlY3QueSgpOyB5IDwgcHJldlJlY3QubWF4WSgpOyArK3kpIHsKICAgICAg
ICAgICAgICAgICAgIGZvciAoaW50IHggPSBwcmV2UmVjdC54KCk7IHggPCBwcmV2UmVjdC5tYXhY
KCk7ICsreCkKICAgICAgICAgICAgICAgICAgICAgICBidWZmZXItPnNldFJHQkEoeCwgeSwgMCwg
MCwgMCwgMCk7CisgICAgICAgICAgICAgICAgICBidWZmZXItPnNldExhc3REZWNvZGVkUm93KHkp
OwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIGlmICgocHJldlJlY3Qud2lkdGgoKSA+
IDApICYmIChwcmV2UmVjdC5oZWlnaHQoKSA+IDApKQogICAgICAgICAgICAgICAgICAgYnVmZmVy
LT5zZXRIYXNBbHBoYSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4
IDkxZjEyMzZiMzU5YmMxNTVhZjM3YzdmZTJjZTM2ZWE3M2M1MDk0OTYuLjQ4NjFjYjY2NzIzOTc4
Y2JkYjM3NzhlMGIzNzgxOThlZWI5YjA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNTc3LDYgKzU3Nyw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2Nh
bmxpbmVzKCkKICAgICBpZiAodHVyYm9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2UpKSB7
CiAgICAgICAgIEFTU0VSVCghbV9zY2FsZWQpOwogICAgICAgICB3aGlsZSAoaW5mby0+b3V0cHV0
X3NjYW5saW5lIDwgaW5mby0+b3V0cHV0X2hlaWdodCkgeworICAgICAgICAgICAgYnVmZmVyLnNl
dExhc3REZWNvZGVkUm93KGluZm8tPm91dHB1dF9zY2FubGluZSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyKiByb3cgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihidWZmZXIu
Z2V0QWRkcigwLCBpbmZvLT5vdXRwdXRfc2NhbmxpbmUpKTsKICAgICAgICAgICAgIGlmIChqcGVn
X3JlYWRfc2NhbmxpbmVzKGluZm8sICZyb3csIDEpICE9IDEpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjI4LDYgKzYyOSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0
cHV0U2NhbmxpbmVzKCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGRl
c3RZKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggMTM4ZDVjNTEyOTFlYTI2ZjY5NjQzZjZhYTQ0ODg0YmI1YzY0ODBlZi4uODEwY2Fh
NzIwODIxOWZmZjZjZjYyOTc0ZThlZjdlZjFiMzQ1MWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTUyMCw2ICs1MjAsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZh
aWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAKICAg
ICBpZiAobm9uVHJpdmlhbEFscGhhICYmICFidWZmZXIuaGFzQWxwaGEoKSkKICAgICAgICAgYnVm
ZmVyLnNldEhhc0FscGhhKG5vblRyaXZpYWxBbHBoYSk7CisgICAgYnVmZmVyLnNldExhc3REZWNv
ZGVkUm93KHkpOwogfQogCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFn
ZURlY29kZXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKaW5kZXggNWNjMTMyYzRkNDg0MDBiODE1MmVlNWY0
ZmVmMjI0MmM0MjlkYjZiNi4uMTMzMThhMzg0NmZmNWFlYmQ5MzAyYWQzMmUxNTMyM2RkODczOGNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tp
YS9JbWFnZURlY29kZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIElt
YWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikK
IHZvaWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogewogICAgIG1fYml0bWFwLmJpdG1h
cCgpLnJlc2V0KCk7CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9zdGF0dXMgPSBG
cmFtZUVtcHR5OwogICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZSgpCiAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBi
aXRtYXAgZGF0YSwgYnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC03Niw2ICs3Nyw3IEBAIGJv
b2wgSW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAK
ICAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOwogICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tp
YSYgb3RoZXJCaXRtYXAgPSBvdGhlci5tX2JpdG1hcDsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0g
b3RoZXIubV9sYXN0RGVjb2RlZFJvdzsKICAgICByZXR1cm4gb3RoZXJCaXRtYXAuYml0bWFwKCku
Y29weVRvKCZtX2JpdG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCkuY29uZmlnKCkp
OwogfQogCkBAIC04NCw2ICs4Niw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3
V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBvbmNlLCBpdCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgo
KSAmJiAhaGVpZ2h0KCkpOwogCisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9iaXRt
YXAuYml0bWFwKCkuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3V2lk
dGgsIG5ld0hlaWdodCk7CiAgICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVscygp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCAwODJlMzNkZGIyYTM2MGUzODg4ZDc5YjAzYTljMjFjY2RiOGMwM2MyLi5hOWY5OGFkODBm
NmYxOTgwNThkMmFmZGViYjZhNDA5ZTIzYWU3OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHAKQEAgLTEzMiwxOSArMTMyLDI2IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVj
b2RlKGJvb2wgb25seVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAg
fQogCi0gICAgc3dpdGNoIChXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNp
emUpKSB7Ci0gICAgY2FzZSBWUDhfU1RBVFVTX09LOgotICAgICAgICBidWZmZXIuc2V0U3RhdHVz
KEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGUpOwotICAgICAgICBXZWJQSURlbGV0ZShtX2RlY29k
ZXIpOwotICAgICAgICBtX2RlY29kZXIgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBj
YXNlIFZQOF9TVEFUVVNfU1VTUEVOREVEOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVm
YXVsdDoKKyAgICBjb25zdCBWUDhTdGF0dXNDb2RlIHN0YXR1cyA9IFdlYlBJVXBkYXRlKG1fZGVj
b2RlciwgZGF0YUJ5dGVzLCBkYXRhU2l6ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBWUDhfU1RBVFVT
X09LICYmIHN0YXR1cyAhPSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkgewogICAgICAgICBXZWJQSURl
bGV0ZShtX2RlY29kZXIpOwogICAgICAgICBtX2RlY29kZXIgPSAwOwogICAgICAgICByZXR1cm4g
c2V0RmFpbGVkKCk7CiAgICAgfQorICAgIGludCBsYXN0WSA9IDA7CisgICAgaWYgKCFXZWJQSURl
Y0dldFJHQihtX2RlY29kZXIsICZsYXN0WSwgMCwgMCwgMCkpCisgICAgICAgIHJldHVybiBzZXRG
YWlsZWQoKTsKKyAgICBBU1NFUlQobGFzdFkgPj0gMCk7CisgICAgQVNTRVJUKGxhc3RZIDw9IHNp
emUoKS5oZWlnaHQoKSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGxhc3RZID8gbGFz
dFkgLSAxIDogMCk7CisKKyAgICBpZiAoc3RhdHVzID09IFZQOF9TVEFUVVNfU1VTUEVOREVEKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGUpOworICAgIFdlYlBJRGVsZXRlKG1fZGVjb2Rlcik7CisgICAgbV9kZWNv
ZGVyID0gMDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggM2ZlYjU3YzU0NDVm
NGRiOGRkOWM2YmU3OGE0YzBhYmViOTNkNDAyMy4uMDFlNTMyN2NiYzYxNTU2ODZkZTdkNmEyMDFj
N2FlMjA4ZWE0ZGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAg
IExheW91dFVuaXQgdXNhYmxlV2lkdGggPSBjV2lkdGggLSAyOwogICAgICAgICAgICAgTGF5b3V0
VW5pdCB1c2FibGVIZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgUmVmUHRyPElt
YWdlPiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKyAgICAgICAgICAgIEltYWdl
KiBpbWFnZSA9IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2UoKS5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2Ut
PmVycm9yT2NjdXJyZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGlt
YWdlLT53aWR0aCgpICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAg
ICAgICAgICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxl
RmFjdG9yKGZyYW1lKCkpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mCiAgICAgICAgICAgICAgICAgaWYgKGNlbnRlclkgPCAwKQogICAgICAgICAgICAgICAgICAg
ICBjZW50ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUo
bGVmdEJvcmRlciArIGxlZnRQYWQgKyBjZW50ZXJYICsgMSwgdG9wQm9yZGVyICsgdG9wUGFkICsg
Y2VudGVyWSArIDEpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5n
ZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWlu
dE9mZnNldCArIGltYWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwg
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFJlY3Qocm91bmRl
ZEludFBvaW50KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQpLCBpbWFnZVNpemUpLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAg
ICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTQ0
Miw3ICs0NDIsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdAogICAgIGlmICghbV9pbWFnZVJl
c291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpIHx8
IGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltZyA9IG1faW1hZ2VSZXNvdXJj
ZS0+aW1hZ2UoYWxpZ25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkpOworICAg
IEltYWdlKiBpbWcgPSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdl
UmVzb3VyY2UtPmltYWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgp
KS5nZXQoKSk7CiAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QKICAgICBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWx0ID8gaW1hZ2VFbHQtPmNv
bXBvc2l0ZU9wZXJhdG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFn
ZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKICAgICBib29sIHVzZUxvd1F1YWxp
dHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdl
LCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5n
ZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3BlcmF0
b3IsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5n
KTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1nLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFs
aWduZWRSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogfQogCiBib29sIFJlbmRlckltYWdlOjpib3hT
aGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNl
IGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKQEAgLTQ4MSw3ICs0ODEsNyBA
QCBib29sIFJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CiAKICAgICAv
LyBDaGVjayBmb3IgYml0bWFwIGltYWdlIHdpdGggYWxwaGEuCiAgICAgSW1hZ2UqIGltYWdlID0g
bV9pbWFnZVJlc291cmNlLT5pbWFnZSgpLmdldCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdl
LT5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCisgICAg
aWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8fCB0b1JldGFpbmVkTW9kZUJp
dG1hcEltYWdlKGltYWdlKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggOTg4NmZiMzE5ODIzNTNkNjQw
MjNmNTc0YjAwYzE0YTIwZmIxZmMyYS4uZjIyNDQ3Zjc1MTUzMTM3YmU5YWVkZjE5OTNjNTMxYTEw
OTdiZTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgor
I2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGls
ZWRCYWNraW5nLmgiCkBAIC0xMDc5LDYgKzEwODAsMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgIGlmICghY2FjaGVkSW1hZ2UtPmlzTG9hZGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIFdlIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZCBiZWZvcmUgc2V0dGluZyBpdCBvbiB0aGUgbGF5ZXIuCisg
ICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIXRvUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UoaW1hZ2UpLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIC8vIFRoaXMgaXMgYSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVy
IGxheWVyIGZvciB0aGUgaW1hZ2UuCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1Rv
SW1hZ2UoaW1hZ2UpOwogICAgIHVwZGF0ZURyYXdzQ29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA1NmJlNWNkNDE2YmNk
ZTI2ZTBhODU1YmUxYWRjZWEyYjQzZmMwYjk1Li5hMTk2ZTc1ZjhhOWRmMWEyOGRjNmU3YmE5MDU0
ZTk2ZjE1NTE1MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgpAQCAtMTI3LDE0ICsxMjgsMTQg
QEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5n
Q29udGV4dCh0aGlzLCBjaGlsZFBhaW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChyZW5kZXJp
bmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICAg
ICAgSW1hZ2UqIGltYWdlID0gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9p
bWFnZVJlc291cmNlLT5pbWFnZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QgPSBtX29iamVjdEJvdW5kaW5nQm94OwogICAgICAgICAgICAgICAgIEZsb2F0UmVj
dCBzcmNSZWN0KDAsIDAsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAg
ICAgICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwogICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+
cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwog
Ci0gICAgICAgICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAg
ICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcAppbmRleCAzYmFl
YTI3YzlmNTU0ODNhZjA1OGFhZmI2MTgxMDcyZTI0NGEwNmQwLi5jZGUxMzlmY2VjYWU1ODM4ZjM2
MjVmOWM4Nzk5MGEzNzcyMTA5NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZUNHLmNwcApAQCAtNzYsNyArNzYsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEo
Y29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5j
cmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVE
YXRhID0gc291cmNlLnJlcXVlc3RGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBmcmFtZShBZG9wdENGLCBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gV2ViSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCmluZGV4IGZiMGRmN2NhZmZjYTFmYTBiMzdkNmU2
M2E5ZWUxNzA4Mjg4NjA2MDUuLjVkODY0YTI3YmE5MTA2MDAzNTkyOTFhNTc2YjI0NjQ2YjA1N2Ux
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAt
NzcsNyArNzcsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYg
ZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5k
ZXgoaW5kZXgpOworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLnJl
cXVlc3RGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGZy
YW1lID0gYWRvcHRQdHIoaW1hZ2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152891</attachid>
            <date>2012-07-17 18:00:39 -0700</date>
            <delta_ts>2012-07-19 02:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120718100031.patch</filename>
            <type>text/plain</type>
            <size>92933</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmMDY5ZDFmYjgxZGQz
ZjE5MGIxZjFkNDMxNTI1YjA0NzljZDg1NC4uZmI2MmM5OTVkMmY3ZmMxY2YyNGI0MzE0YTU4MDRl
MzNiYTc2YzY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5OSBAQAogMjAxMi0wNy0xNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpsYXN0RGVj
b2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRMYXN0RGVjb2RlZFJv
dyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VS
ZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVy
Ojpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rl
cjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xl
YXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKworMjAxMi0wNy0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBSZWZhY3RvcmluZyBtZXRhZGF0YSBv
ZiBCaXRtYXBJbWFnZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNzU4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWExNTJjNjE4ZDgy
Mzc2ZWJmOGZhYTIzMDYxNGIzMGYxNzljMjcyMy4uZjgwNjVkZGY3YzBjNTU5NDkzYjgyYmExMTI4
ZTY4NDUyMWE5Y2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBA
QAogMjAxMi0wNy0xNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
IAorICAgICAgICBBZGQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcg
YW5kIEt3YW5nIFl1bCBTZW8uCisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhl
IG1haW4gdGhyZWFkLCBzbyB0aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAg
ICAgICB0aW1lIGluIGxvYWRpbmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxl
IGltYWdlIGRlY29kaW5nIHRocmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFj
a2dyb3VuZC4KKworICAgICAgICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1
bWVudC9wdWI/aWQ9MTJnZjdNaE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAK
KyAgICAgICAgZm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgICogc3JjL1dlYklt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJvbURhdGEpOgorICAgICAg
ICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6ZnJv
bURhdGEpOgorCisyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgorCiAgICAgICAgIFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQ0MwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IGVmZTdkNWE0MjJlNjZlNThkNTk3YjIwNTVkZDE2N2VjYjIx
Y2I2YWIuLmJiMzU1MTY2MTk0M2U3NzNiMWQ4M2Q5MTExOGM1NzhkMGU3MTA4NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xMjA1LDkgKzEyMDUsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2RlV29ya2VyLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGUwMzJhM2JhNjNhNjU0Mzg3ZjA5NDI5NGIx
ZDVjNDE1NDIxMDU4ZDguLmI1N2ViMjJiYmIyOWNjNGVjZDIyZGQ3ZmU0OWZkOWU0ZGRlNWY5ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzIwOSw2ICszMjA5LDExIEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JTcGFjZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXku
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
aW5kZXggYmJjODc0NGE2NDkyNWZlNDc3ZTZkYjc4MWE5NTRlY2E0MDBiMzc4OC4uY2YzZTM0ZGY0
MDIyZWE1ZjBlOTA3NGQxYTNjZjJkZTczMDc1MWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05NjUsMTAg
Kzk2NSwxMiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIFwKQEAgLTIwODYsMTEgKzIwODgsMTQgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBc
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaCBcCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJz
YWxTdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvTmF0aXZlSW1hZ2VRdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA2ZTBmY2VkZmJlOTU5
ZjQzOWRmMDU0MTM0ZThiZTI3MDUxZDUxMzJiLi5hNGE4ZjA4OGQyYTUxMjk0YmIxNGZlZTg4NjBi
NjZhYmMyZWM0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTEwLDExICszNTEwLDE2IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL1BhdHRlcm4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJp
dG1hcEltYWdlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5o
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
MmE3NDRhZjY5MzhlYjRmOGMwMDYyOWU2YzkwNjU3MjY0ODQ1ZjBkYy4uYWM1ZDMyMDY4YWJjN2Rm
OGRkNWVlNzEwNzJlZTJkZTZhNWM0YWFhYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NDA2LDYgKzI5NDA2LDE4IEBACiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXJhbGxlbElt
YWdlRGVjb2Rlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZl
ci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCIKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KQEAgLTI5NDM0LDYgKzI5NDQ2LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDhlNjI4ZWIzZjhlOWY3OThmZTgwM2RhZTJhYjU0NTExZDMzNTE2ZjAuLmNjYjVm
NmVhNWE5MjkxNzI1M2NmMjdlYzVmY2I4NGM1NzVjMmQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjAsNiArMTQyMCw4
IEBACiAJCTRCMzA0M0NEMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzA0M0NCMEFFMDM3M0IwMEE4MjY0
NyAvKiBFZGl0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMzQ4MDkxMEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovOyB9OwogCQk0QjM0ODA5NDBF
RUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0cuaCAqLzsgfTsKKwkJNUIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5jcHAgKi87IH07CisJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
LmggKi87IH07CiAJCTRCNkZBNkY0MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkYyMEMz
OUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QjZGQTZGNTBDMzlFNDhDMDAwODcwMTEgLyogU21h
cnRSZXBsYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRCNkZBNkYzMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwICovOyB9Owog
CQk0QjZGQTZGNzBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjYwQzM5RTRBMTAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCAqLzsgfTsKQEAgLTg1MjQsNiArODUyNiw4IEBA
CiAJCTRCMzA0M0NCMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEltYWdlU291cmNlQ0dNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBJ
bWFnZVNvdXJjZUNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlU291
cmNlQ0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUIzNDgwOTEwRUVGNTBENDAw
QUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRC
NkZBNkYyMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU21hcnRSZXBsYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRCNkZBNkYzMEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjYwQzM5RTRBMTAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNtYXJ0
UmVwbGFjZUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTY4LDYgKzE5
NTcyLDggQEAKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAq
LywKIAkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAg
Ki8sCiAJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAq
LywKKwkJCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2UuY3BwICovLAorCQkJCTVCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZS5oICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeENHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2c7CkBAIC0yNDUyNyw2
ICsyNDUzMyw3IEBACiAJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVx
dWVzdENGTmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2N0YwQ0U5MjNB
MTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MEE1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEMzE2MEE3MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVs
YXRpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE5MTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MTAsNiArMjc3MTcs
NyBAQAogCQkJCTUxNEM3NjdFMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RUU2ODQ3MTEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjU1MENFOTIz
NEYwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUIzNDgwOTMwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE0MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQTYxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBBODEyQjAyNkY3
MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDMyNzY4
MDBjYTUyNjAzZGZiNGQ0YzYxOTkxM2QxYjM0NjkwMzRiY2QuLjgwM2UyOWQxNDEyMTU1YjFjOWVj
ZDQxYjY3ZWE3MzQwNjBjNDgxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgQml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxl
KGZhbHNlKQogICAgICwgbV9oYXNVbmlmb3JtRnJhbWVTaXplKHRydWUpCiAgICAgLCBtX2hhdmVG
cmFtZUNvdW50KGZhbHNlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKIH0KIApA
QCAtMjA4LDcgKzIwOSwxMiBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55
IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1h
LXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1fZnJhbWUg
JiYgIW1fZnJhbWVzW2ldLm1faXNDb21wbGV0ZSkKKworICAgICAgICAvLyBOT1RFOiBEb24ndCBj
bGVhciB0aGUgY3VycmVudCBmcmFtZSwgYmVjYXVzZSB0aGUgZnJhbWUgbWlnaHQgaGF2ZSBiZWVu
IGRlY29kZWQKKyAgICAgICAgLy8gaW4gcmV0YWluZWQgbW9kZSBhbmQgUmVuZGVySW1hZ2UgaGFz
bid0IHJlbmRlciB0aGlzIGRlY29kZWQgaW1hZ2UgeWV0LgorICAgICAgICAvLyBJZiB0aGUgY3Vy
cmVudCBmcmFtZSBpcyByZW1vdmVkIGhlcmUsIHRoZSBpbWFnZSBlbGVtZW50IHdpbGwgYmUgcmVu
ZGVyZWQgYXMgd2hpdGUgYm94LgorICAgICAgICAvLyBUaGUgY3VycmVudCBmcmFtZSB3aWxsIGJl
IHJlbW92ZWQgbGF0ZXIgd2hlbiByZXRhaW5lZCBtb2RlIGRlY29kaW5nIGlzIGZpbmlzaGVkLgor
ICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBs
ZXRlICYmIG1fY3VycmVudEZyYW1lICE9IGkpCiAgICAgICAgICAgICBmcmFtZXNDbGVhcmVkICs9
IChtX2ZyYW1lc1tpXS5jbGVhcih0cnVlKSA/IDEgOiAwKTsKICAgICB9CiAgICAgZGVzdHJveU1l
dGFkYXRhQW5kTm90aWZ5KGZyYW1lc0NsZWFyZWQpOwpAQCAtMjU2LDggKzI2MiwxOCBAQCBib29s
IEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCkKICAgICBpZiAo
aW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAg
ICBpZiAobV9pc0NhY2hpbmdGcmFtZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBt
X2ZyYW1lIGNhbiBleGlzdCB3aGVuIG1faXNDb21wbGV0ZSBpcyBmYWxzZSwgc28gd2UgbmVlZCB0
byBjYWNoZSBhIG5ldyBmcmFtZSBldmVuIGlmIG1fZnJhbWUgZXhpc3RzLgorICAgIC8vIFNlZSBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQgZm9yIGV4cGxhbmF0aW9uLgorICAgIGJvb2wgbmVlZFRv
Q2FjaGUgPSBpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIGlmIChuZWVkVG9DYWNo
ZSkgeworICAgICAgICBtX2lzQ2FjaGluZ0ZyYW1lID0gdHJ1ZTsKICAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCk7CisgICAgICAgIG1faXNDYWNoaW5nRnJhbWUgPSBmYWxzZTsKKyAgICB9CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjY3LDExICsyODMsMjcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgpCiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSA8IG51
bUZyYW1lcykKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwogCi0gICAgbV9zb3Vy
Y2UucmVxdWVzdEZyYW1lQXRJbmRleChpbmRleCk7CisgICAgbV9zb3VyY2UucmVxdWVzdEZyYW1l
QXRJbmRleChpbmRleCwgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkpOwogfQogCi12b2lkIEJpdG1h
cEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VG
cmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQorYm9vbCBCaXRtYXBJbWFnZTo6cmV0YWluZWRNb2Rl
UmVuZGVyaW5nKCkgY29uc3QKIHsKKyAgICByZXR1cm4gbV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQo
KSAmJiBtX3JldGFpbmVkTW9kZUltYWdlLT5yZXRhaW5lZE1vZGVSZW5kZXJpbmcoKTsKK30KKwor
dm9pZCBCaXRtYXBJbWFnZTo6ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1lRGF0YSwgYm9vbCByZXRhaW5lZCwgYm9vbCBw
YXJhbGxlbERlY29kZXJDYW5jZWxlZCkKK3sKKyAgICAvLyBJdCBpcyBwb3NzaWJsZSB0byBjYWxs
IGNhY2hlRnJhbWUgaW5kaXJlY3RseSBpbiB0aGlzIG1ldGhvZC4KKyAgICBSZXRhaW5lZE1vZGVT
YXZlciByZXRhaW5lZE1vZGVTYXZlcihtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpLCByZXRhaW5l
ZCk7CisKKyAgICAvLyBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSBtdXN0IGJlIGNsZWFyZWQgYmVm
b3JlIGl0IGlzIHJlcGxhY2VkIHdpdGggbmV3IGRlY29kZWQgZnJhbWUuCisgICAgLy8gSWYgd2Ug
Zm9yZ2V0IHRvIGNsZWFyIG1fZnJhbWUsIHRoZSBvbGQgbV9mcmFtZSBsZWFrcy4KKyAgICAvLyBT
ZWUgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkIGZvciBleHBsYW5hdGlvbiB3aHkgdGhlIGRlY29k
ZWQgZnJhbWUgbXVzdCBiZSByZW1vdmVkIGhlcmUuCisgICAgaW50IGZyYW1lc0NsZWFyZWQgPSAw
OworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICAgICAgZnJhbWVzQ2xlYXJl
ZCArPSAobV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpID8gMSA6IDApOworICAgIGRlc3Ryb3lN
ZXRhZGF0YUFuZE5vdGlmeShmcmFtZXNDbGVhcmVkKTsKKwogICAgIG1fZnJhbWVzW2luZGV4XS5z
ZXRGcm9tSW1hZ2VGcmFtZURhdGEoaW1hZ2VGcmFtZURhdGEpOwogCiAgICAgc2l6ZV90IG51bUZy
YW1lcyA9IGZyYW1lQ291bnQoKTsKQEAgLTI4OCw4ICszMjAsMTIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IEltYWdlRnJhbWVE
YXRhJiBpbWEKICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCiAgICAg
ICAgIGRlbHRhQnl0ZXMgLT0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7CiAgICAgICAgIG1fZGVj
b2RlZFByb3BlcnRpZXNTaXplID0gMDsKLSAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAg
ICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkgewogICAgICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRlcyk7CisKKyAgICAgICAgICAgIGlm
ICgobV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiByZXRhaW5lZCkgfHwgcGFyYWxsZWxE
ZWNvZGVyQ2FuY2VsZWQpCisgICAgICAgICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5jaGFuZ2Vk
SW5SZWN0KHRoaXMsIEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CisgICAgICAgIH0KICAg
ICB9CiB9CiAKQEAgLTMwOSw3ICszNDUsMTMgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8gKHNlZSBkZXN0cm95RGVjb2RlZERh
dGEoKSBhbmQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoKSkKICAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2lzQ29tcGxldGU7CisgICAgLy8gSWYgdGhlIGZyYW1lIGF0IHRoZSBnaXZlbiBp
bmRleCBpcyBkZWNvZGVkIGJ5IHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCBtX2ZyYW1lIGNhbiBi
ZSAwIGV2ZW4gaWYgbV9pc0NvbXBsZXRlIGlzIHRydWUuCisgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2lzQ29tcGxldGUgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7Cit9CisKK2Jvb2wg
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKQoreworICAgIHJldHVybiBmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIH0KIAogZmxvYXQgQml0bWFwSW1h
Z2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDgxNzcyNzNkY2Y5MGRjNWMw
NDM1NTc3NjAyNWYyNjY5YTA1MTIxYjUuLjhjYmM2NTQ1NTM3MDkxZmI2YmM1NWM1NWY2ZTA5Mzc4
Nzk2NzVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIK
ICNpbmNsdWRlICJJbWFnZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAKICNpZiBQTEFURk9STShNQUMp
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTIwLDEwICsxMjEsMTIgQEAgcHJpdmF0
ZToKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAogY2xhc3MgQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2UsIHB1YmxpYyBJbWFnZVNvdXJjZU9i
c2VydmVyIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U7CiAgICAg
ZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdG9yR2VuZXJhdGVkSW1hZ2U7
CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKKyAgICBmcmllbmQgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCiAgICAgewpAQCAt
MjAxLDcgKzIwNCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VPYnNl
cnZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29u
c3QgSW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJ
bmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZhbHNl
LCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjM4LDYgKzI0MSw4IEBAIHByb3RlY3RlZDoK
ICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogCisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBs
ZXRlKCk7CisKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNz
ZWQgZXhjZXB0IGludGVybmFsbHkuCiAgICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCk7
CiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdLiBSZXR1cm5z
IGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3VuZHMuCkBAIC0yOTMsNiArMjk4LDggQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsKICAgICB2aXJ0
dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKICAgICAKKyAgICBib29sIHJldGFpbmVkTW9k
ZVJlbmRlcmluZygpIGNvbnN0OworCiAgICAgSW1hZ2VTb3VyY2UgbV9zb3VyY2U7CiAgICAgbXV0
YWJsZSBJbnRTaXplIG1fc2l6ZTsgLy8gVGhlIHNpemUgdG8gdXNlIGZvciB0aGUgb3ZlcmFsbCBp
bWFnZSAod2lsbCBqdXN0IGJlIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSkuCiAgICAgbXV0
YWJsZSBJbnRTaXplIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKQEAgLTMxNyw2ICszMjQs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2RlY29kZWRQcm9wZXJ0aWVz
U2l6ZTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVkIGJ5IHRoZSBzb3VyY2UgdG8gZGV0ZXJt
aW5lIGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwgZnJhbWUgY291bnQsIGV0YykuCiAgICAg
c2l6ZV90IG1fZnJhbWVDb3VudDsKIAorICAgIFJlZlB0cjxSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZT4gbV9yZXRhaW5lZE1vZGVJbWFnZTsKKwogICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAv
LyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1hZ2UuCiAgICAgYm9vbCBtX2No
ZWNrZWRGb3JTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFt
ZSBmb3Igc29saWQgY29sb3IuCiAKQEAgLTMyNyw2ICszMzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0YWlu
IHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgogICAg
IG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAgIG11dGFibGUgYm9v
bCBtX2hhdmVGcmFtZUNvdW50IDogMTsKKworICAgIGJvb2wgbV9pc0NhY2hpbmdGcmFtZSA6IDE7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggMDIwMzM0ZWNmZGQ1NmNlZGE0NmU3YWE5ZTMyMWVlZjE1OTJkNDM5MS4u
NzNiNTkzZjY1MzUxNDc3NTg3MzdlOTRkNWZkNTE3NWE1OGJjYzJlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzUsOSArMzUs
MTMgQEAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFy
YWxsZWxJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBpbnQgc19yZXNvbHV0aW9uVGhyZXNo
b2xkRm9yUGFyYWxsZWwgPSAzMDAgKiAzMDA7CisKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2Rl
ZEltYWdlID0gMTAyNCAqIDEwMjQ7CiAjZW5kaWYKQEAgLTY2LDExICs3MCwxNSBAQCBJbWFnZVNv
dXJjZTo6fkltYWdlU291cmNlKCkKIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJv
eUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlmICht
X2RlY29kZXIpCisgICAgICAgIC8vIE9ubHkgR0lGIGRlY29kZXIgaW1wbGVtZW50cyBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUuCisgICAgICAgIGlmIChtX2RlY29kZXIgJiYgIW1fcGFyYWxsZWxEZWNv
ZGVyKQogICAgICAgICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xlYXJC
ZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9wYXJhbGxl
bERlY29kZXIuZ2V0KCkpCisgICAgICAgIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7CisKICAgICBk
ZWxldGUgbV9kZWNvZGVyOwogICAgIG1fZGVjb2RlciA9IDA7CiAgICAgaWYgKGRhdGEpCkBAIC04
OCw2ICs5NiwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFtaW5l
IHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlhdGUg
ZGVjb2RlciBwbHVnaW4uCiAgICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFpbGFi
bGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxsIGJl
CiAgICAgLy8gbWFkZS4KKworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkgeworICAg
ICAgICBBU1NFUlQobV9kZWNvZGVyKTsKKyAgICAgICAgbV9wYXJhbGxlbERlY29kZXItPnNldERh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIG1fZGVjb2RlciA9IHN0YXRpY19jYXN0PE5hdGl2
ZUltYWdlU291cmNlUHRyPihJbWFnZURlY29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9wdGlv
biwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogI2lmIEVOQUJMRShJTUFHRV9ERUNP
REVSX0RPV05fU0FNUExJTkcpCkBAIC0xMDIsMTEgKzExNywxNSBAQCB2b2lkIEltYWdlU291cmNl
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKIFN0
cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogeworICAgIGlmICht
X3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVy
LT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXIt
PmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKCkKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBtX2RlY29kZXIgJiYgbV9kZWNvZGVyLT5p
c1NpemVBdmFpbGFibGUoKTsKIH0KIApAQCAtMTE2LDYgKzEzNSw4IEBAIEludFNpemUgSW1hZ2VT
b3VyY2U6OnNpemUoUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RPcmll
bnRhdGlvbikKICAgICBpZiAoc2hvdWxkUmVzcGVjdE9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCisgICAgaWYgKG1fcGFy
YWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gbV9wYXJhbGxlbERlY29kZXItPnNp
emUoKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5zaXplKCkgOiBJbnRTaXpl
KCk7CiB9CiAKQEAgLTEyNSw2ICsxNDYsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNp
emVBdEluZGV4KHNpemVfdCBpbmRleCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCiAgICAg
aWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikK
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAgICAgcmV0
dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCkgOiBJbnRT
aXplKCk7CiB9CiAKQEAgLTE0MCwyMyArMTYzLDEyMCBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0CiAKIGludCBJbWFnZVNvdXJj
ZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkp
CisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8g
bV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOwogfQogCiBzaXpl
X3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogeworICAgIGlmIChtX3BhcmFsbGVs
RGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/
IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJj
ZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGJvb2wgcmV0YWluZWRNb2RlUmVu
ZGVyaW5nKQoreworICAgIEFTU0VSVCghKHJldGFpbmVkTW9kZVJlbmRlcmluZyAmJiBpbmRleCkp
OworICAgIEFTU0VSVCghKHJldGFpbmVkTW9kZVJlbmRlcmluZyAmJiAhbV9vYnNlcnZlcikpOwor
CisgICAgaWYgKCFtX2RlY29kZXIpIHsKKyAgICAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZy
YW1lQXRJbmRleChpbmRleCwgSW1hZ2VGcmFtZURhdGEoKSk7CisgICAgICAgIHJldHVybiBJbWFn
ZUZyYW1lRGF0YSgpOworICAgIH0KKworICAgIGlmICghcmV0YWluZWRNb2RlUmVuZGVyaW5nIHx8
ICFtX29ic2VydmVyIHx8IGZpcnN0RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgIHJldHVybiBz
ZXJpYWxEZWNvZGUoaW5kZXgpOworCisgICAgaWYgKHNob3VsZERlY29kZVBhcmFsbGVsKCkpIHsK
KyAgICAgICAgcGFyYWxsZWxEZWNvZGUoKTsKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVEYXRh
KCk7CisgICAgfQorCisgICAgcmV0dXJuIHNlcmlhbERlY29kZShpbmRleCk7Cit9CisKK2Jvb2wg
SW1hZ2VTb3VyY2U6OnNob3VsZERlY29kZVBhcmFsbGVsKCkKK3sKKyAgICBBU1NFUlQobV9kZWNv
ZGVyKTsKKworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAoV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgPT0gMSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGZpbGVFeHQgPSBmaWxlbmFtZUV4dGVu
c2lvbigpOworICAgIGlmIChmaWxlRXh0ID09ICJpY28iIHx8IGZpbGVFeHQgPT0gImdpZiIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNTaXplQXZhaWxhYmxlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzaXplKCkuYXJlYSgpIDwgc19yZXNvbHV0aW9u
VGhyZXNob2xkRm9yUGFyYWxsZWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIEltYWdlU291cmNlOjpmaXJzdEZyYW1lSXNDb21wbGV0ZSgpCit7
CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisgICAgSW1hZ2VGcmFtZSogaW1hZ2VGcmFtZSA9IDA7
CisgICAgaWYgKCFtX3BhcmFsbGVsRGVjb2RlcikKKyAgICAgICAgaW1hZ2VGcmFtZSA9IG1fZGVj
b2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIHJldHVybiBpbWFnZUZy
YW1lICYmIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW1hZ2VGcmFtZSk7Cit9CisKK3ZvaWQgSW1h
Z2VTb3VyY2U6OnBhcmFsbGVsRGVjb2RlKCkKK3sKKyAgICBjcmVhdGVQYXJhbGxlbERlY29kZXJJ
Zk5lZWRlZCgpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5kZWNvZGUoKTsKK30KKwordm9pZCBJ
bWFnZVNvdXJjZTo6ZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1lRGF0
YSkKK3sKKyAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2
ZUZyYW1lQXRJbmRleCgwLCBpbWFnZUZyYW1lRGF0YSwgdHJ1ZSk7CisKKyAgICBpZiAoaW1hZ2VG
cmFtZURhdGEubV9pc0NvbXBsZXRlKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOwor
fQorCit2b2lkIEltYWdlU291cmNlOjpjcmVhdGVQYXJhbGxlbERlY29kZXJJZk5lZWRlZCgpCit7
CisgICAgaWYgKCFtX3BhcmFsbGVsRGVjb2RlcikKKyAgICAgICAgbV9wYXJhbGxlbERlY29kZXIg
PSBhZG9wdFJlZihuZXcgUGFyYWxsZWxJbWFnZURlY29kZXIodGhpcywgbV9kZWNvZGVyKSk7Cit9
CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKCkKIHsKICAgICBBU1NF
UlQobV9vYnNlcnZlcik7CisgICAgbV9wYXJhbGxlbERlY29kZXItPmludmFsaWRhdGUoKTsKKyAg
ICBtX3BhcmFsbGVsRGVjb2Rlci5jbGVhcigpOworfQorCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNv
dXJjZTo6c2VyaWFsRGVjb2RlKHNpemVfdCBpbmRleCkKK3sKKyAgICBib29sIHBhcmFsbGVsRGVj
b2RlckNhbmNlbGVkID0gZmFsc2U7CisgICAgLy8gUmVuZGVySW1hZ2UgYW5kIENhbnZhc0VsZW1l
bnQgY2FuIHNoYXJlIHRoZSBzYW1lIENhY2hlZEltYWdlLgorICAgIGlmIChtX3BhcmFsbGVsRGVj
b2Rlci5nZXQoKSkgeworICAgICAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgICAgIGNsZWFy
UGFyYWxsZWxEZWNvZGVyKCk7CisgICAgICAgIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gdHJ1
ZTsKKyAgICB9CisKICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUZy
YW1lQXRJbmRleChpbmRleCk7Ci0gICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJbmRl
eChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworCisgICAgaWYgKG1fb2JzZXJ2ZXIpCisgICAgICAg
IG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVEYXRh
LCBmYWxzZSAvKiByZXRhaW5lZE1vZGUgKi8sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkKTsKKwor
ICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0KIAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CisgICAgQVNTRVJUKCFtX3Bh
cmFsbGVsRGVjb2Rlcik7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBJbWFn
ZUZyYW1lRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaAppbmRleCAyZTY0ZDdkZWE3MzczNGU3ZjcwOGFmNjBkMjlhMzFiODQxMmYxODA5
Li5jNDI3OWVjOWZjYWRkNDM0MjVkMzMyYmRkODM5YmI1NWNjNTI0YThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI5LDYgKzI5LDkg
QEAKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5o
IgorI2lmICFVU0UoQ0cpCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5o
IgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgpAQCAtNjUsNiArNjgsOSBAQCBjbGFzcyBJbWFnZU9yaWVudGF0aW9uOwogY2xh
c3MgSW1hZ2VTb3VyY2VPYnNlcnZlcjsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsK
KyNpZiAhVVNFKENHKQorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXI7CisjZW5kaWYKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogI2lmIFVTRShDRykKQEAgLTE0Myw3ICsxNDksMTEgQEAgY29uc3Qg
aW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZp
bml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLWNsYXNzIEltYWdl
U291cmNlIHsKK2NsYXNzIEltYWdlU291cmNlCisjaWYgIVVTRShDRykKKyAgICA6IHB1YmxpYyBQ
YXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZVNvdXJjZSk7CiBwdWJsaWM6CiAgICAgZW51bSBBbHBoYU9wdGlvbiB7CkBA
IC0yMTAsMTcgKzIyMCwyNCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNv
bnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5n
IGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKKyAgICAvLyBOT1RFOiBDYWxsZXJzIHNob3Vs
ZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4
OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIHZvaWQgcmVxdWVz
dEZyYW1lQXRJbmRleChzaXplX3QpOwotICAgIEltYWdlRnJhbWVEYXRhIGNyZWF0ZUZyYW1lQXRJ
bmRleChzaXplX3QpOworICAgIC8vIE5PVEU6IElmIEltYWdlU291cmNlIGhhcyBJbWFnZVNvdXJj
ZU9ic2VydmVyLCB0aGlzIG1ldGhvZCBzZW5kcyB0aGUgcmVzdWx0IHZpYSBkaWREZWNvZGUoKS4K
KyAgICAvLyBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJlc3VsdC4gZS5nLiBH
cmFwaGljc0NvbnRleHQzRAorICAgIEltYWdlRnJhbWVEYXRhIHJlcXVlc3RGcmFtZUF0SW5kZXgo
c2l6ZV90LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZyA9IGZhbHNlKTsKIAogI2lmIEVOQUJM
RShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgc3RhdGljIHVuc2lnbmVkIG1heFBp
eGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdl
OyB9CiAgICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2lnbmVk
IG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsgfQog
I2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIC8vIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2
ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJik7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90KTsKICNpZiBVU0UoQ0cpCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIg
b3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KQEAgLTIzMyw4ICsyNTAs
MjAgQEAgcHJpdmF0ZToKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChJ
bWFnZUZyYW1lKikgY29uc3Q7CiAjZW5kaWYKIAorI2lmICFVU0UoQ0cpCisgICAgdm9pZCBjcmVh
dGVQYXJhbGxlbERlY29kZXJJZk5lZWRlZCgpOworICAgIHZvaWQgY2xlYXJQYXJhbGxlbERlY29k
ZXIoKTsKKyAgICBib29sIHNob3VsZERlY29kZVBhcmFsbGVsKCk7CisgICAgYm9vbCBmaXJzdEZy
YW1lSXNDb21wbGV0ZSgpOworICAgIHZvaWQgcGFyYWxsZWxEZWNvZGUoKTsKKyAgICBJbWFnZUZy
YW1lRGF0YSBzZXJpYWxEZWNvZGUoc2l6ZV90KTsKKworICAgIFJlZlB0cjxQYXJhbGxlbEltYWdl
RGVjb2Rlcj4gbV9wYXJhbGxlbERlY29kZXI7CisjZW5kaWYKKwogICAgIE5hdGl2ZUltYWdlU291
cmNlUHRyIG1fZGVjb2RlcjsKICAgICBJbWFnZVNvdXJjZU9ic2VydmVyKiBtX29ic2VydmVyOwor
CiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwogI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmgKaW5kZXggNzJhZjcwOGM3ZWNkMTFmODE2
ZThhOGUwMjcyOTAyNjA2MDgyMTQyOC4uZDMyMDc4MmQ4ZTgzMGMwNGU5OWYwMWUxNDNmZDI5YTk0
YTgzMjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlT2JzZXJ2ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBJbWFnZUZyYW1l
RGF0YTsKIC8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4g
SW1hZ2VTb3VyY2UsIGluY2x1ZGluZyBkZWNvZGluZy4KIGNsYXNzIEltYWdlU291cmNlT2JzZXJ2
ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNp
emVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYsIGJvb2wgcmV0
YWluZWQgPSBmYWxzZSwgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IGZhbHNlKSA9IDA7
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5JbWFnZVNvdXJjZU9ic2VydmVyKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI5Y2ZhZjU1MzExMzc4NDUwZDMzMTQ2NDJlZDFj
ODgzNjk0N2E1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsxLDMwNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNv
ZGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25B
cnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgUGFyYWxsZWxGcmFtZURhdGE7Cit2b2lkIGRpZERlY29kZVRhc2tD
YWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworc3RhdGljIEltYWdlRnJhbWVEYXRhIGNyZWF0
ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKK1BhcmFsbGVsSW1hZ2VEZWNv
ZGVyOjpQYXJhbGxlbEltYWdlRGVjb2RlcihQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyKiBv
YnNlcnZlciwgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQorICAgIDogbV9vYnNlcnZlcihvYnNlcnZl
cikKKyAgICAsIG1faXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCisgICAgLCBtX2J5dGVzT2ZEYXRh
Q29uc3VtZWQoMCkKKyAgICAsIG1faW1hZ2VEZWNvZGVyKDApCit7CisgICAgaW5pdGlhbGl6ZShk
ZWNvZGVyKTsKK30KKworUGFyYWxsZWxJbWFnZURlY29kZXI6On5QYXJhbGxlbEltYWdlRGVjb2Rl
cigpCit7CisgICAgQVNTRVJUKCF2YWxpZCgpKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6aW5pdGlhbGl6ZShJbWFnZURlY29kZXIqIGRlY29kZXIpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCkgJiYg
IWRlY29kZXItPnNpemUoKS5pc0VtcHR5KCkpOworCisgICAgbV9zaXplID0gZGVjb2Rlci0+c2l6
ZSgpOworICAgIG1fZmlsZW5hbWVFeHRlbnNpb24gPSBkZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lv
bigpOworCisgICAgc2V0RGF0YShkZWNvZGVyLT5kYXRhKCksIGRlY29kZXItPmlzQWxsRGF0YVJl
Y2VpdmVkKCkpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2ltYWdl
RnJhbWUuc2V0U2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAgIG1f
aW1hZ2VEZWNvZGVyID0gZGVjb2RlcjsKKyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YSgwLCBm
YWxzZSk7CisgICAgLy8gQWZ0ZXIgdGhpcyBsaW5lLCBpdCBpcyBpbGxlZ2FsIGZvciB0aGUgbWFp
biB0aHJlYWQgdG8gYWNjZXNzIG1faW1hZ2VEZWNvZGVyLgorCisgICAgLy8gVGhpcyBtdXN0IGJl
IHRoZSBsYXN0IGxpbmUgYmVjYXVzZSBJbWFnZURlY29kZVdvcmtlciBndWFyYW50ZWVzCisgICAg
Ly8gdGhlIHZpc2liaWxpdHkgb2YgbWVtYmVycyBpbiB0aGUgdGFzayB0aHJlYWQuCisgICAgbV9k
ZWNvZGVXb3JrZXIgPSBJbWFnZURlY29kZVdvcmtlcjo6YWNxdWlyZVNoYXJlZFdvcmtlcigpOwor
fQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAgICBp
ZiAobV9kZWNvZGVXb3JrZXIuZ2V0KCkpIHsKKyAgICAgICAgbV9kZWNvZGVXb3JrZXItPmludmFs
aWRhdGUoKTsKKyAgICAgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICB9CisgICAgLy8g
VGhlIG1haW4gdGhyZWFkIGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0aHJl
YWRzIGRvIG5vdCBhY2Nlc3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisgICAg
bV9pbWFnZURlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBtX2lzQWxsRGF0YVJlY2VpdmVk
KTsKKworICAgIG1fc2l6ZSA9IEludFNpemUoKTsKKyAgICBtX2ZpbGVuYW1lRXh0ZW5zaW9uID0g
IiI7CisKKyAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gZmFsc2U7CisgICAgbV9kYXRhLmNsZWFy
KCk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gMDsKKworICAgIG1faW1hZ2VGcmFtZSA9
IEltYWdlRnJhbWUoKTsKKworICAgIGlmIChtX2RhdGFGb3JUYXNrLmdldCgpKQorICAgICAgICBt
X2RhdGFGb3JUYXNrLmNsZWFyKCk7CisKKyAgICBtX2ltYWdlRGVjb2RlciA9IDA7Cit9CisKK3Zv
aWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1f
aXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CisgICAgbV9kYXRhID0gZGF0YTsK
K30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGVjb2RlKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisgICAgQVNTRVJU
KCFtX3NpemUuaXNFbXB0eSgpKTsKKworICAgIE93blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+IHNl
Z21lbnQgPSBleHRyYWN0U2VnbWVudEZvclRhc2soKTsKKyAgICBpZiAoIXNlZ21lbnQuZ2V0KCkp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2RlY29kZVdvcmtlci0+cG9zdFRhc2soYmluZCgmUGFy
YWxsZWxJbWFnZURlY29kZXI6OmRlY29kZVRhc2ssIHRoaXMsIHNlZ21lbnQucmVsZWFzZSgpKSk7
Cit9CisKK1Bhc3NPd25QdHI8UGFyYWxsZWxJbWFnZURlY29kZXI6OkVuY29kZWREYXRhU2VnbWVu
dD4gUGFyYWxsZWxJbWFnZURlY29kZXI6OmV4dHJhY3RTZWdtZW50Rm9yVGFzaygpCit7CisgICAg
QVNTRVJUKG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA+PSAwICYmIG1fYnl0ZXNPZkRhdGFDb25zdW1l
ZCA8PSBtX2RhdGEtPnNpemUoKSk7CisKKyAgICBpbnQgc2l6ZU9mU2VnbWVudCA9IG1fZGF0YS0+
c2l6ZSgpIC0gbV9ieXRlc09mRGF0YUNvbnN1bWVkOworICAgIGlmICghc2l6ZU9mU2VnbWVudCkK
KyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PigpOworCisgICAg
T3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gc2VnbWVudChhZG9wdFB0cihuZXcgRW5jb2RlZERh
dGFTZWdtZW50KCkpKTsKKyAgICBjb25zdCBjaGFyKiBzcmNQdHIgPSBtX2RhdGEtPmRhdGEoKSAr
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBzZWdtZW50LT5tX3NlZ21lbnQuYXBwZW5kKHNy
Y1B0ciwgc2l6ZU9mU2VnbWVudCk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gbV9kYXRh
LT5zaXplKCk7CisKKyAgICBzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkID0gbV9pc0FsbERh
dGFSZWNlaXZlZDsKKworICAgIHJldHVybiBzZWdtZW50LnJlbGVhc2UoKTsKK30KKworc3RydWN0
IFBhcmFsbGVsRnJhbWVEYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXJhbGxlbEZy
YW1lRGF0YSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgUGFyYWxsZWxGcmFtZURhdGEoUGFzc1JlZlB0cjxQYXJhbGxlbEltYWdlRGVjb2Rlcj4g
cGFyYWxsZWxEZWNvZGVyKQorICAgICAgICA6IG1fcGFyYWxsZWxEZWNvZGVyKHBhcmFsbGVsRGVj
b2RlcikKKyAgICAgICAgLCBtX2RlY29kZWRTZWdtZW50KCkKKyAgICAgICAgLCBtX3N0YXR1cyhJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KQorICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCisgICAg
ICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHRydWUpCisgICAgeworICAgIH0KKworICAgIH5QYXJh
bGxlbEZyYW1lRGF0YSgpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxQYXJhbGxlbEltYWdl
RGVjb2Rlcj4gbV9wYXJhbGxlbERlY29kZXI7CisgICAgT3duQXJyYXlQdHI8SW1hZ2VGcmFtZTo6
UGl4ZWxEYXRhPiBtX2RlY29kZWRTZWdtZW50OworICAgIEltYWdlRnJhbWU6OkZyYW1lU3RhdHVz
IG1fc3RhdHVzOworICAgIGJvb2wgbV9oYXNBbHBoYTsKKyAgICBib29sIG1fcHJlbXVsdGlwbHlB
bHBoYTsKKyAgICBJbnRSZWN0IG1fZGVjb2RlZFJlY3Q7Cit9OworCit2b2lkIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKFBhc3NPd25QdHI8UGFyYWxsZWxJbWFnZURlY29kZXI6OkVu
Y29kZWREYXRhU2VnbWVudD4gcGFzc1NlZ21lbnQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVyKTsKKworICAgIE93blB0cjxFbmNvZGVk
RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBwYXNzU2VnbWVudDsKKworICAgIC8vIDEuIFNlbmQgc2Vn
bWVudCBkYXRhIHRvIEltYWdlRGVjb2Rlci4KKyAgICBpZiAoIW1fZGF0YUZvclRhc2spIHsKKyAg
ICAgICAgbV9kYXRhRm9yVGFzayA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisjaWZuZGVmIE5E
RUJVRworICAgICAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGRvZXMgbm90IGFsbG93
IHR3byB0aHJlYWRzIHRvIGFjY2VzcyBvbmUgUmVmQ291bnRlZCBvYmplY3QuCisgICAgICAgIC8v
IG1fZGF0YUZvclRhc2sgaXMgdXNlZCBieSBib3RoIHRoZSBtYWluIHRocmVhZCBhbmQgdGhlIHRh
c2sgdGhyZWFkOgorICAgICAgICAvLyBUaGUgdGFzayB0aHJlYWQgY3JlYXRlcywgdXNlcyBhbmQg
cmVtb3ZlcyBtX2RhdGFGb3JUYXNrLiBUaGUgbWFpbiB0aHJlYWQgbWF5IHJlbW92ZQorICAgICAg
ICAvLyBtX2RhdGFGb3JUYXNrIGlmIHRoZSB0YXNrIHRocmVhZCBjb3VsZCBub3QgcmVtb3ZlIG1f
ZGF0YUZvclRhc2suCisgICAgICAgIC8vCisgICAgICAgIC8vIFBhcmFsbGVsIGltYWdlIGRlY29k
ZXJzIG1hbmFnZSBtX2RhdGFGb3JUYXNrIGluIGEgdGhyZWFkLXNhZmUgd2F5LiBIb3dldmVyLAor
ICAgICAgICAvLyB3ZSBjYW4ndCB0ZWxsIHRoZSB2ZXJpZmllciB0aGF0IHdlIGFyZSBzYWZlIGJ5
IHNpbXBseSBwYXNzaW5nIGEgbXV0ZXgKKyAgICAgICAgLy8gYmVjYXVzZSBsaWJkaXNwYXRjaCBk
b2VzIG5vdCBldmVuIGd1YXJhbnRlZSBkZWNvZGVUYXNrIGlzIGNhbGxlZCBieSB0aGUgc2FtZSB0
aHJlYWQKKyAgICAgICAgLy8gZWFjaCB0aW1lLiBTbyB0dXJuIG9mZiB0aGUgdmVyaWZpZXIgaGVy
ZS4KKyAgICAgICAgbV9kYXRhRm9yVGFzay0+dHVybk9mZlZlcmlmaWVyKCk7CisjZW5kaWYKKyAg
ICB9CisgICAgbV9kYXRhRm9yVGFzay0+YXBwZW5kKHNlZ21lbnQtPm1fc2VnbWVudCk7CisgICAg
bV9pbWFnZURlY29kZXItPnNldERhdGEobV9kYXRhRm9yVGFzay5nZXQoKSwgc2VnbWVudC0+bV9p
c0FsbERhdGFSZWNlaXZlZCk7CisKKyAgICBJbWFnZUZyYW1lKiBvbGRCdWZmZXIgPSBtX2ltYWdl
RGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIGludCBsYXN0RGVj
b2RlZFJvdyA9IG9sZEJ1ZmZlciA/IG9sZEJ1ZmZlci0+bGFzdERlY29kZWRSb3coKSA6IDA7CisK
KyAgICAvLyAyLiBEZWNvZGUgYW4gaW1hZ2UgaW5jcmVtZW50YWxseS4KKyAgICBJbWFnZUZyYW1l
KiBidWZmZXIgPSBtX2ltYWdlRGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOworICAgIGlm
ICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkg
eworICAgICAgICBBU1NFUlQoIXNlZ21lbnQtPm1faXNBbGxEYXRhUmVjZWl2ZWQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gMy4gTWFrZSBhIFBhcmFsbGVsRnJhbWVEYXRhIGlu
IG9yZGVyIHRvIHBhc3MgaXQgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIFBhcmFsbGVsRnJhbWVE
YXRhKiBwYXJhbGxlbEZyYW1lRGF0YSA9IG5ldyBQYXJhbGxlbEZyYW1lRGF0YSh0aGlzKTsKKyAg
ICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgPSBidWZmZXItPnN0YXR1cygpOworICAgIHBh
cmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhhID0gYnVmZmVyLT5oYXNBbHBoYSgpOworICAgIHBh
cmFsbGVsRnJhbWVEYXRhLT5tX3ByZW11bHRpcGx5QWxwaGEgPSBidWZmZXItPnByZW11bHRpcGx5
QWxwaGEoKTsKKworICAgIGludCBuZXdMYXN0RGVjb2RlZFJvdyA9IGJ1ZmZlci0+bGFzdERlY29k
ZWRSb3coKTsKKyAgICAvLyBPbmx5IGluIEJNUCwgbGFzdERlY29kZWRSb3cgY2FuIGJlIGJpZ2dl
ciB0aGFuIG5ld0xhc3REZWNvZGVkUm93LgorICAgIGludCBsYXN0RGVjb2RlZE1pblJvdyA9IHN0
ZDo6bWluKGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAgaW50IGxhc3RE
ZWNvZGVkTWF4Um93ID0gc3RkOjptYXgobGFzdERlY29kZWRSb3csIG5ld0xhc3REZWNvZGVkUm93
KTsKKyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdCA9IEludFJlY3QoMCwgbGFz
dERlY29kZWRNaW5Sb3csIG1faW1hZ2VEZWNvZGVyLT5zaXplKCkud2lkdGgoKSwgbGFzdERlY29k
ZWRNYXhSb3cgLSBsYXN0RGVjb2RlZE1pblJvdyArIDEpOworCisgICAgLy8gNC4gQ3JlYXRlIGRl
Y29kZWQgc2VnbWVudCBkYXRhIGluIG9yZGVyIHRvIHBhc3MgaXQgdG8gdGhlIG1haW4gdGhyZWFk
LgorICAgIC8vICAgIElmIHRoZSBzdGF0dXMgaXMgRnJhbWVDb21wbGV0ZSwgdGhpcyBpcyBub3Qg
bmVlZGVkIGJlY2F1c2UgYSBOYXRpdmVJbWFnZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIGRl
Y29kZXIgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIGlmIChwYXJhbGxlbEZyYW1lRGF0YS0+bV9z
dGF0dXMgPT0gSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKSB7CisgICAgICAgIGludCBzZWdtZW50
U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0LnNpemUoKS5hcmVhKCk7Cisg
ICAgICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50ID0gYWRvcHRBcnJheVB0
cihuZXcgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhW3NlZ21lbnRTaXplXSk7CisKKyAgICAgICAgSW1h
Z2VGcmFtZTo6UGl4ZWxEYXRhKiBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2Rl
Y29kZWRTZWdtZW50LmdldCgpOworICAgICAgICBtZW1jcHkoc2VnbWVudEFkZHIsIGJ1ZmZlci0+
Z2V0QWRkcigwLCBsYXN0RGVjb2RlZE1pblJvdyksIHNlZ21lbnRTaXplICogc2l6ZW9mKEltYWdl
RnJhbWU6OlBpeGVsRGF0YSkpOworICAgIH0gZWxzZSB7IC8vIEZyYW1lQ29tcGxldGUKKyAgICAg
ICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOworICAgICAgICBtX2RhdGFGb3JU
YXNrLmNsZWFyKCk7CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKGRpZERlY29k
ZVRhc2tDYWxsYmFjaywgcGFyYWxsZWxGcmFtZURhdGEpKTsKK30KKwordm9pZCBkaWREZWNvZGVU
YXNrQ2FsbGJhY2soUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgLy8gSWYgYSBjbGllbnQgY2FsbGVkIFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpjbGVhcigpLCBQYXJhbGxlbEltYWdlRGVjb2RlciBpcyBpbnZhbGlk
YXRlZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT52YWxp
ZCgpKQorICAgICAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9wYXJhbGxlbERlY29kZXItPmRpZERl
Y29kZVRhc2socGFyYWxsZWxGcmFtZURhdGEpOworICAgIGRlbGV0ZSBwYXJhbGxlbEZyYW1lRGF0
YTsKK30KKworSW1hZ2VGcmFtZURhdGEgY3JlYXRlSW1hZ2VGcmFtZURhdGEoUGFyYWxsZWxGcmFt
ZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJh
bWVEYXRhOworICAgIGltYWdlRnJhbWVEYXRhLm1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbjsKKyAgICBpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgPSBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9zdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICBpbWFn
ZUZyYW1lRGF0YS5tX2hhc0FscGhhID0gIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSB8fCBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9oYXNBbHBoYTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZURhdGE7
Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29kZVRhc2soUGFyYWxsZWxG
cmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyAhPSBJbWFnZUZyYW1l
OjpGcmFtZUVtcHR5KTsKKworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gY3Jl
YXRlSW1hZ2VGcmFtZURhdGEocGFyYWxsZWxGcmFtZURhdGEpOworCisgICAgaWYgKCFpbWFnZUZy
YW1lRGF0YS5tX2lzQ29tcGxldGUpCisgICAgICAgIGRpZERlY29kZVBhcnRpYWwoaW1hZ2VGcmFt
ZURhdGEsIHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBlbHNlCisgICAgICAgIGRpZERlY29kZUNv
bXBsZXRlKGltYWdlRnJhbWVEYXRhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6
ZGlkRGVjb2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEsIFBhcmFsbGVs
RnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUocGFyYWxsZWxGcmFtZURh
dGEpOworICAgIHN5bmNJbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGltYWdl
RnJhbWVEYXRhLm1fZnJhbWUgPSBtX2ltYWdlRnJhbWUuYXNOZXdOYXRpdmVJbWFnZSgpOworICAg
IG1fb2JzZXJ2ZXItPmRpZERlY29kZShpbWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFyYWxs
ZWxJbWFnZURlY29kZXI6OmFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKFBhcmFsbGVsRnJh
bWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBjb25zdCBJbWFnZUZyYW1lOjpQaXhl
bERhdGEqIGNvbnN0IHNlZ21lbnRBZGRyID0gcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFNl
Z21lbnQuZ2V0KCk7CisgICAgaW50IHNlZ21lbnRTaXplID0gcGFyYWxsZWxGcmFtZURhdGEtPm1f
ZGVjb2RlZFJlY3Quc2l6ZSgpLmFyZWEoKTsKKyAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRl
c3RBZGRyID0gbV9pbWFnZUZyYW1lLmdldEFkZHIoMCwgcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVj
b2RlZFJlY3QueSgpKTsKKyAgICBtZW1jcHkoZGVzdEFkZHIsIHNlZ21lbnRBZGRyLCBzZWdtZW50
U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpKTsKK30KKwordm9pZCBQYXJhbGxl
bEltYWdlRGVjb2Rlcjo6c3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVs
RnJhbWVEYXRhKQoreworICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMgYXJlIG5lZWRlZCB0byBj
cmVhdGUgYSB2YWxpZCBuYXRpdmUgaW1hZ2UgaW4gSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFn
ZSgpLgorICAgIG1faW1hZ2VGcmFtZS5zZXRTdGF0dXMocGFyYWxsZWxGcmFtZURhdGEtPm1fc3Rh
dHVzKTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0SGFzQWxwaGEocGFyYWxsZWxGcmFtZURhdGEtPm1f
aGFzQWxwaGEpOworICAgIG1faW1hZ2VGcmFtZS5zZXRQcmVtdWx0aXBseUFscGhhKHBhcmFsbGVs
RnJhbWVEYXRhLT5tX3ByZW11bHRpcGx5QWxwaGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjpkaWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fZGVjb2RlV29ya2VyLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICAvLyBUaGUgbWFp
biB0aHJlYWQgY2FuIHVzZSBtX2ltYWdlRGVjb2RlciBiZWNhdXNlIG90aGVyIHRocmVhZHMgZG8g
bm90IGFjY2VzcyBtX2ltYWdlRGVjb2RlciBhZnRlciB0aGlzIGxpbmUuCisKKyAgICBJbWFnZUZy
YW1lKiBidWZmZXIgPSBtX2ltYWdlRGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29k
ZSgpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9
IGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworICAgIG1fb2JzZXJ2ZXItPmRpZERlY29kZShp
bWFnZUZyYW1lRGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZjBhMzhh
Yjc4MzBiZTQ3ZmJmMDE5Zjc3MDJmZDAzMmQ1NzhmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCkBAIC0w
LDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhcmFsbGVsSW1hZ2VEZWNvZGVy
X2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVXb3JrZXIuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJQYXJhbGxl
bEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworY2xhc3MgUGFy
YWxsZWxGcmFtZURhdGE7CisKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFBhcmFsbGVsSW1hZ2VEZWNvZGVyPiB7CitwdWJsaWM6CisgICAg
UGFyYWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciosIEltYWdl
RGVjb2RlciopOworICAgIH5QYXJhbGxlbEltYWdlRGVjb2RlcigpOworCisgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CisKKyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOworCisgICAgdm9pZCBkZWNvZGUoKTsKKworICAgIGlubGluZSBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOyB9Cisg
ICAgaW5saW5lIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCitwcml2
YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZShJbWFnZURlY29kZXIqKTsKKworICAgIGlubGluZSBi
b29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZURlY29kZXI7IH0KKworICAgIHN0cnVj
dCBFbmNvZGVkRGF0YVNlZ21lbnQgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbmNv
ZGVkRGF0YVNlZ21lbnQpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBw
dWJsaWM6CisgICAgICAgIEVuY29kZWREYXRhU2VnbWVudCgpIHsgfQorICAgICAgICBWZWN0b3I8
Y2hhcj4gbV9zZWdtZW50OworICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisgICAg
fTsKKworICAgIFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBleHRyYWN0U2VnbWVudEZv
clRhc2soKTsKKworICAgIC8vIE9ubHkgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSB0YXNr
IHRocmVhZC4KKyAgICB2b2lkIGRlY29kZVRhc2soUGFzc093blB0cjxFbmNvZGVkRGF0YVNlZ21l
bnQ+KTsKKworICAgIHZvaWQgZGlkRGVjb2RlVGFzayhQYXJhbGxlbEZyYW1lRGF0YSopOworICAg
IHZvaWQgZGlkRGVjb2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYsIFBhcmFsbGVsRnJhbWVEYXRh
Kik7CisgICAgdm9pZCBhcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1l
RGF0YSopOworICAgIHZvaWQgc3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAg
ICB2b2lkIGRpZERlY29kZUNvbXBsZXRlKEltYWdlRnJhbWVEYXRhJik7CisgICAgZnJpZW5kIHZv
aWQgZGlkRGVjb2RlVGFza0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKKyAgICBQYXJh
bGxlbEltYWdlRGVjb2Rlck9ic2VydmVyKiBtX29ic2VydmVyOworCisgICAgSW50U2l6ZSBtX3Np
emU7CisgICAgU3RyaW5nIG1fZmlsZW5hbWVFeHRlbnNpb247CisKKyAgICAvLyBGb3IgaW5wdXQg
ZGF0YQorICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZDsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgaW50IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKworICAgIC8vIEZv
ciBvdXRwdXQgZGF0YQorICAgIEltYWdlRnJhbWUgbV9pbWFnZUZyYW1lOworCisgICAgLy8gVGhl
IHRhc2sgdGhyZWFkIGNhbiBhY2Nlc3Mgb25seSBtX2RhdGFGb3JUYXNrIGFuZCBtX2ltYWdlRGVj
b2Rlci4KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFGb3JUYXNrOworCisgICAgSW1h
Z2VEZWNvZGVyKiBtX2ltYWdlRGVjb2RlcjsKKworICAgIFJlZlB0cjxJbWFnZURlY29kZVdvcmtl
cj4gbV9kZWNvZGVXb3JrZXI7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3ZTE5NzA1ZTFl
MjljNWYzOWFkYmRjYmU5Nzc3OGExODFkOGU2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVj
b2Rlck9ic2VydmVyX2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcl9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CisKKy8vIEludGVy
ZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGRlY29kaW5nIGNvbXBsZXRpb24gb2YgYW4gUGFy
YWxsZWxJbWFnZURlY29kZXIuCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRh
JikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGFyYWxsZWxJbWFnZURlY29kZXJP
YnNlcnZlcigpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wOWJhYjY2NTU3ZTFmNzE0Mjg3MTBkMzVlODU4ZjU5M2JlOGRkZGJiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisK
KyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NS
ZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpj
cmVhdGUoQml0bWFwSW1hZ2UqIGJpdG1hcEltYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpKTsKK30KKworUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKEJpdG1hcEltYWdlKiBiaXRt
YXBJbWFnZSkKKyAgICA6IG1fYml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpCisgICAgLCBtX3JldGFp
bmVkTW9kZUNvdW50KDApCit7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6Omhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciBy
ZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKTsKK30KKworSW50U2l6ZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2
ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNpemUoKTsKK30KKworYm9vbCBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgcG9pbnQpIGNvbnN0
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
cmV0dXJuIG1fYml0bWFwSW1hZ2UtPmdldEhvdFNwb3QocG9pbnQpOworfQorCitib29sIFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKK3sK
KyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1
cm4gbV9iaXRtYXBJbWFnZS0+ZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKK30KKworU3Ry
aW5nIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Cit7
CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0
dXJuIG1fYml0bWFwSW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7Cit9CisKK3ZvaWQgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCit7
CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9i
aXRtYXBJbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOworfQorCit1bnNpZ25l
ZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGVjb2RlZFNpemUoKSBjb25zdAoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2Jp
dG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlOjpzdGFydEFuaW1hdGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSkKK3sKKyAgICBSZXRh
aW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdl
LT5zdGFydEFuaW1hdGlvbihjYXRjaFVwSWZOZWNlc3NhcnkpOworfQorCit2b2lkIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5zdG9wQW5pbWF0
aW9uKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9u
KCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAg
ICBtX2JpdG1hcEltYWdlLT5yZXNldEFuaW1hdGlvbigpOworfQorCitOYXRpdmVJbWFnZVB0ciBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorewor
ICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVy
biBtX2JpdG1hcEltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworfQorCitib29s
IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCit7CisgICAg
UmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1f
Yml0bWFwSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisKK2Jvb2wgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKQoreworICAgIFJldGFpbmVk
TW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcElt
YWdlLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJl
dGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1hZ2UtPmRyYXcoY29udGV4dCwg
ZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Cit9CisKK2Jvb2wgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7CisgICAgUmV0YWlu
ZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFw
SW1hZ2UtPm1heUZpbGxXaXRoU29saWRDb2xvcigpOworfQorCitDb2xvciBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIg
cmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNvbGlk
Q29sb3IoKTsKK30KKworUmV0YWluZWRNb2RlU2F2ZXI6OlJldGFpbmVkTW9kZVNhdmVyKGNvbnN0
IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKiBpbWFnZSwgYm9vbCByZXRhaW5lZCkKKyAgICA6IG1f
aW1hZ2UoaW1hZ2UpCisgICAgLCBtX3JldGFpbmVkKHJldGFpbmVkKQoreworICAgIGlmIChtX3Jl
dGFpbmVkKQorICAgICAgICBtX2ltYWdlLT5iZWdpblJldGFpbmVkTW9kZSgpOworfQorCitSZXRh
aW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNhdmVyKCkKK3sKKyAgICBpZiAobV9yZXRhaW5l
ZCkKKyAgICAgICAgbV9pbWFnZS0+ZW5kUmV0YWluZWRNb2RlKCk7Cit9CisKK1JldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKEltYWdlKiBpbWFnZSkKK3sK
KyAgICBBU1NFUlQoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSk7CisKKyAgICBCaXRtYXBJbWFnZSog
Yml0bWFwSW1hZ2UgPSBzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKTsKKyAgICBpZiAo
IWJpdG1hcEltYWdlLT5tX3JldGFpbmVkTW9kZUltYWdlLmdldCgpKQorICAgICAgICBiaXRtYXBJ
bWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZSA9IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjcmVh
dGUoYml0bWFwSW1hZ2UpOworCisgICAgcmV0dXJuIGJpdG1hcEltYWdlLT5tX3JldGFpbmVkTW9k
ZUltYWdlLmdldCgpOworfQorCitJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9z
c2libGUoSW1hZ2UqIGltYWdlKQoreworICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNCaXRtYXBJ
bWFnZSgpKQorICAgICAgICByZXR1cm4gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSk7
CisgICAgcmV0dXJuIGltYWdlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zM2U3YThjMzg1NTczMGNlOWM5OWFlMTlmMTM4MDlkYWZjZjg1N2U1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21w
YW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2VfaAorI2RlZmluZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZV9oCisK
KyNpbmNsdWRlICJJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJpdG1h
cEltYWdlOworY2xhc3MgUmV0YWluZWRNb2RlU2F2ZXI7CisKK2NsYXNzIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlIDogcHVibGljIEltYWdlIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0YWluZWRNb2Rl
U2F2ZXI7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFw
SW1hZ2U+IGNyZWF0ZShCaXRtYXBJbWFnZSopOworCisgICAgdmlydHVhbCB+UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpIGNvbnN0OworCisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworCisgICAgdmlydHVhbCBi
b29sIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGRlY29kZWRTaXplKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24o
Ym9vbCBjYXRjaFVwSWZOZWNlc3NhcnkgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFu
aW1hdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisgICAgdmly
dHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIHZp
cnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworCisgICAgYm9vbCBjdXJyZW50RnJh
bWVJc0NvbXBsZXRlKCk7CisKKyAgICBpbmxpbmUgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmco
KSBjb25zdCB7IHJldHVybiBtX3JldGFpbmVkTW9kZUNvdW50OyB9CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKworICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNv
bGlkQ29sb3IoKTsKKyAgICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSop
OworCisgICAgaW5saW5lIHZvaWQgYmVnaW5SZXRhaW5lZE1vZGUoKSBjb25zdCB7IG1fcmV0YWlu
ZWRNb2RlQ291bnQrKzsgfQorICAgIGlubGluZSB2b2lkIGVuZFJldGFpbmVkTW9kZSgpIGNvbnN0
CisgICAgeworICAgICAgICBtX3JldGFpbmVkTW9kZUNvdW50LS07CisgICAgICAgIEFTU0VSVCht
X3JldGFpbmVkTW9kZUNvdW50ID49IDApOworICAgIH0KKworICAgIEJpdG1hcEltYWdlKiBtX2Jp
dG1hcEltYWdlOworICAgIG11dGFibGUgaW50IG1fcmV0YWluZWRNb2RlQ291bnQ7Cit9OworCitj
bGFzcyBSZXRhaW5lZE1vZGVTYXZlciB7CitwdWJsaWM6CisgICAgUmV0YWluZWRNb2RlU2F2ZXIo
Y29uc3QgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UqLCBib29sIHJldGFpbmVkID0gdHJ1ZSk7Cisg
ICAgflJldGFpbmVkTW9kZVNhdmVyKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UqIG1faW1hZ2U7CisgICAgYm9vbCBtX3JldGFpbmVkOworfTsKKworCitS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSop
OworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKEltYWdlKik7CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IGRjNmE0ZDRiY2I3MmM2YWU3
MzRmZTczOWE4YzRjZTdkNTY0MTVmNDcuLmQwNmIxZjc3YmZkYTU5MzRiZWQ3NmNlMTkyOTcwYTJj
NGMyODEyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC01OCw2ICs1OCw3IEBAIEJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZUNhaXJvKiBuYXRpdmVJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCiAgICAgLCBtX3NpemVB
dmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXND
YWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gbmF0
aXZlSW1hZ2UtPnN1cmZhY2UoKTsKICAgICBpbnQgd2lkdGggPSBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF93aWR0aChzdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5k
ZXggMjU0MmNmOGZhOTFkMGI4YTcxNDM4NWE0ZTMwMjM5Njc4M2Q5NjFkZC4uYjc0MjVhOWU4MTZm
YjNiZWVkYjMyZTAwN2Q3ZDJiOGQzMTUxMmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RD
YWlyby5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJ
bWFnZURhdGEoSW1hZ2UqIGltYWdlLCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZAogICAg
ICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IEltYWdlRnJhbWVEYXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
QXRJbmRleCgwKTsKKyAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFnZUZyYW1lRGF0YSA9
IGRlY29kZXIucmVxdWVzdEZyYW1lQXRJbmRleCgwKTsKICAgICAgICAgaWYgKCFpbWFnZUltYWdl
RnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgT3duUHRyPE5hdGl2ZUltYWdlQ2Fpcm8+IG5hdGl2ZUltYWdlID0gYWRvcHRQdHIoaW1hZ2VJ
bWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggNzgwYmE0
NGQ4NDFhNjAwOTkzOTg4ZGEyMzE0NjMwODI5ZDQzMzkzZC4uMzg3ZjFlZjUyZWRlOTEzOGE0MGFk
ZGRjOWY2ZDU3ODc1NmM4NTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdl
LAogICAgICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFt
ZUF0SW5kZXgoMCk7CisgICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVj
b2Rlci5yZXF1ZXN0RnJhbWVBdEluZGV4KDApOwogICAgICAgICBkZWNvZGVkSW1hZ2UuYWRvcHRD
RihpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICAgICAgY2dJbWFnZSA9IGRlY29kZWRJbWFn
ZS5nZXQoKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggNzNjZWUyMjA1ZDVmMmQ5NzFiOWRhYWFiNjM0MzVlY2Y1
MTkwMGFmMC4uNDA2M2RmMDU0OGExN2EwNjEwMGM2MDdmZDJjNzgyOTRkODFiZWQzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAgLTgx
LDYgKzgxLDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCiAgICAgLCBt
X3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAs
IG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VH
ZXRXaWR0aChjZ0ltYWdlKTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
Y2dJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0cuY3BwCmluZGV4IGI0NDU0OTkzYjUyODdjNTRmZjc0YjI5YjBkZTAzMDYy
NzZhZmI0MjQuLmZhOWJjM2VkMjAzMDI1Y2E4MDBjOWIzYWE3MGJkNTViM2ZmMjZiYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgog
I2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgor
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtMzA5LDExICsz
MTAsMTIgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwogfQog
Ci12b2lkIEltYWdlU291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK0lt
YWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgYm9vbCkKIHsKICAgICBBU1NFUlQobV9vYnNlcnZlcik7CiAgICAgSW1hZ2VGcmFtZURhdGEg
aW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIG1fb2JzZXJ2
ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVEYXRhKTsKKyAgICBy
ZXR1cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpj
cmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAKaW5kZXggY2Q4Nzk0
ZTUzOWNmZDUwZWU4OGE3N2UwN2M0NWY4MmFiOWNkNzM1My4uOTAwMGZjM2RmYjViMzA5Y2RhZmFh
OTk3MTI1YjdiOTYzNWVmM2ZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShUaWxlZEltYWdlT3BlblZHKiB0aWxlZEltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwg
bV9oYXNVbmlmb3JtRnJhbWVTaXplKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIEFTU0VSVChtX3NpemUud2lk
dGgoKSA+IDApOwogICAgIEFTU0VSVChtX3NpemUuaGVpZ2h0KCkgPiAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggZTY3NWNkNDJi
ZjMxMDk0ZWFhYmVkMTgxMDg0MGU3OGYwYTE2NDFiMy4uOTdiNTY1MmYzZDQ3OTk3ZmRlNGU5MTEx
ODNlODA0YTllNmEwZjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VRdC5jcHAKQEAgLTIxNCw2ICsyMTQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoUUltYWdlKiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hh
dmVTaXplKHRydWUpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZy
YW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAgICAgaW50
IHdpZHRoID0gaW1hZ2UtPndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IGltYWdlLT5oZWlnaHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3Jh
cGhpY3NDb250ZXh0M0RTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcAppbmRleCBmNTZkNzI0NWFkMTBlYzNhZTg1
YmVkNDI3MDllNmY2YjQ3MmIyYzUwLi4xZjA0NTljNTRhYzUwNWZjNzJiZDNjYjA4NmVhZWUyNjg4
YTVlMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAg
ICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
SW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRl
eCgwKTsKKyAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLnJl
cXVlc3RGcmFtZUF0SW5kZXgoMCk7CiAgICAgICAgIGlmICghaW1hZ2VGcmFtZURhdGEubV9pc0Nv
bXBsZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBoYXNBbHBoYSA9IGlt
YWdlRnJhbWVEYXRhLm1faGFzQWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0ltYWdlV3guY3BwCmluZGV4IGI3YzI0OTZjNzNiNTI2NWYxZDg1MzRlMzM3ZWU4
YzIwZmUzMDI5ODkuLmI0YjU3YmU5YmEzNDMwNWQzNDlmYmY0YzRlNWI0NzY3NWZiODMxNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCkBA
IC05NSw2ICs5NSw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCB3eEJpdG1hcCYg
Yml0bWFwKQogICAgICwgbV9kZWNvZGVkU2l6ZSgwKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0
cnVlKQogICAgICwgbV9mcmFtZUNvdW50KDEpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNl
KQogewogICAgIG1fZGVjb2RlZFNpemUgPSBiaXRtYXAuR2V0V2lkdGgoKSAqIGJpdG1hcC5HZXRI
ZWlnaHQoKSAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZShiaXRtYXAuR2V0V2lkdGgoKSwgYml0
bWFwLkdldEhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDcyYjVkZGMyZGUzMWQwMDQwNzI3
ZDQ0ZTk1MTYyYWRmNmJhYzc2YzcuLjkwNGY4NjY4NjMzMmRhOGMzMjZkZDBmNmViNTdiYjQ1NTY3
NzVkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQwLDYgKzE0MCw3IEBAIEltYWdlRGVjb2Rlciog
SW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJj
ZTo6QWxwaGFPCiAKIEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgIDogbV9oYXNBbHBoYShm
YWxzZSkKKyAgICAsIG1fbGFzdERlY29kZWRSb3coMCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1w
dHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VO
b3RTcGVjaWZpZWQpCkBAIC0xNjUsNiArMTY2LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBp
eGVsRGF0YSgpCiB7CiAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX2J5dGVzID0g
MDsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7
CiAgICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKCkgY2FsbHMgdGhpcwogICAgIC8vIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRh
LCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UgaW5pdEZyYW1lQnVmZmVyKCkgYW5kCkBAIC0xODcs
NiArMTg5LDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZy
YW1lJiBvdGhlcikKICAgICBtX2J5dGVzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOwogICAgIG1f
c2l6ZSA9IG90aGVyLm1fc2l6ZTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsK
KyAgICBtX2xhc3REZWNvZGVkUm93ID0gb3RoZXIubV9sYXN0RGVjb2RlZFJvdzsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMTk5LDYgKzIwMiw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6
ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAgbV9iYWNraW5nU3RvcmUucmVzaXpl
KGJhY2tpbmdTdG9yZVNpemUpOwogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7
CiAgICAgbV9zaXplID0gSW50U2l6ZShuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBtX2xhc3RE
ZWNvZGVkUm93ID0gMDsKIAogICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5oCmluZGV4IDkxMTg3OGUxZDk2MjIyNjQ3ZTdmMzQ3ZTc2NjJkMmZiZWYzZjAy
OGIuLjI3MDNlNDg4YjhlNjhhNmU5NmNkY2I1YWIyZTk1NmU3YTU1YWRlYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CkBAIC0xMTgsNiArMTE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOYXRpdmVJ
bWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBo
YSgpIGNvbnN0OworICAgICAgICBpbnQgbGFzdERlY29kZWRSb3coKSBjb25zdCB7IHJldHVybiBt
X2xhc3REZWNvZGVkUm93OyB9CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBGcmFt
ZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNp
Z25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KQEAgLTEyNSw2ICsx
MjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQg
c2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CisgICAgICAgIGlubGluZSB2b2lkIHNldExhc3REZWNv
ZGVkUm93KGludCBsYXN0RGVjb2RlZFJvdykgeyBtX2xhc3REZWNvZGVkUm93ID0gbGFzdERlY29k
ZWRSb3c7IH0KICAgICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxl
Jik7CiAgICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcikg
eyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFt
ZVN0YXR1cyBzdGF0dXMpOwpAQCAtMTgxLDYgKzE4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KICAg
ICAgICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOwogI2VuZGlmCisgICAgICAgIGludCBt
X2xhc3REZWNvZGVkUm93OwogICAgICAgICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8v
IFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2Fz
IHNtYWxsZXIgdGhhbiB0aGUKQEAgLTIyOCw2ICsyMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAg
ICAgICB9CiAKKyAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhLmdldCgpOyB9CisKICAgICAgICAgLy8gTGF6aWx5LWRlY29kZXMgZW5vdWdoIG9mIHRoZSBp
bWFnZSB0byBnZXQgdGhlIHNpemUgKGlmIHBvc3NpYmxlKS4KICAgICAgICAgLy8gRklYTUU6IFJp
Z2h0IG5vdyB0aGF0IGhhcyB0byBiZSBkb25lIGJ5IGVhY2ggc3ViY2xhc3M7IGZhY3RvciB0aGUK
ICAgICAgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KQEAgLTI3Niw2ICsy
ODEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXItb3du
ZWQgcG9pbnRlci4KICAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5k
ZXgoc2l6ZV90KSA9IDA7CiAKKyAgICAgICAgLy8gUmV0dXJucyBhbiBJbWFnZURlY29kZXItb3du
ZWQgcG9pbnRlciB3aXRob3V0IGRlY29kaW5nIG1vcmUuCisgICAgICAgIEltYWdlRnJhbWUqIGZp
cnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSA/IDAgOiAmbV9mcmFtZUJ1ZmZlckNhY2hl
WzBdOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0K
ICAgICAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVy
biBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5
L0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDZhNjVlNjE3ZDE5ZTY3YmZhMjE4MDUzODdjMTE5
NWRhNDgyMWRiNmQuLmJkY2FlZjA1ZWE0MDExNWQwNmNmNzM1ZjA5MTlhYWM0YjIxOWVlZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVy
cnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTU3LDYgKzE1
Nyw3IEBAIGludCBJbWFnZVJlYWRlcjo6ZGVjb2RlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCwgSW1hZ2VGcmFtZSogYUZyYW1lKQogICAgICAgICAgICAgYUZyYW1lLT5zZXRSR0JBKGksIGos
IGN1clB0clswXSwgY3VyUHRyWzFdLCBjdXJQdHJbMl0sIDI1NSk7CiAgICAgICAgICAgICBjdXJQ
dHIgKz0gMzsKICAgICAgICAgfQorICAgICAgICBhRnJhbWUtPnNldExhc3REZWNvZGVkUm93KGop
OwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggMjBhMjQ4YzdkM2JjYjExY2FkN2M2NzY5NWViODI3NTc1Mjc4MjQ5My4uZjc0ZGRlM2EwZGZm
YWFiNzliMDVhYjQzOGJkMWZmOGZlYTJjMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5j
cHAKQEAgLTY0LDggKzY0LDE1IEBAIHZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKIGJvb2wgQk1QSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKQogewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVB
dmFpbGFibGUoKSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpIHsK
KyAgICAgICAgLy8gT25seSBCTVBJbWFnZURlY29kZXIgbXVzdCBtYWtlIG1fZnJhbWVCdWZmZXJD
YWNoZVswXSBpbiBpc1NpemVBdmFpbGFibGUoKSwKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgZGVm
YXVsdCB2YWx1ZSBvZiBJbWFnZUZyYW1lOjptX2xhc3REZWNvZGVkUm93IGNhbiBiZSAiaGVpZ2h0
IC0gMSIuCisgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOworICAgICAgICAgICAgbV9mcmFt
ZUJ1ZmZlckNhY2hlLmZpcnN0KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxw
aGEpOworICAgICAgICB9CiAgICAgICAgIGRlY29kZSh0cnVlKTsKKyAgICB9CiAKICAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFk
ZXIuY3BwCmluZGV4IDVjMDA1NTM0ZWNkOTIxMzRhMTNiMzI5NTg5Mjc3OTBmMDdhZDBmODEuLjRm
N2UzMTc5ZTY2NjMzOGEzYTExNGIxYjIyYTFlMzQ5NDgzOTQ1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmNwcApAQCAtNjQsOCArNjQsMTEgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2Rl
Qk1QKGJvb2wgb25seVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHByb2Nl
c3NJbmZvSGVhZGVyKCkgc2V0IHRoZSBzaXplLCBzbyBpZiB0aGF0J3MgYWxsIHdlIG5lZWRlZCwg
d2UncmUgZG9uZS4KLSAgICBpZiAob25seVNpemUpCisgICAgaWYgKG9ubHlTaXplKSB7CisgICAg
ICAgIGlmICghbV9pc1RvcERvd24pCisgICAgICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERlY29k
ZWRSb3cobV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CiAKICAgICAvLyBSZWFkIGFuZCBwcm9jZXNzIHRoZSBiaXRtYXNrcywgaWYgbmVl
ZGVkLgogICAgIGlmIChtX25lZWRUb1Byb2Nlc3NCaXRtYXNrcyAmJiAhcHJvY2Vzc0JpdG1hc2tz
KCkpCkBAIC02MjQsNiArNjI3LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc1JMRURh
dGEoKQogCiAgICAgICAgICAgICAgICAgbV9kZWNvZGVkT2Zmc2V0ICs9IDI7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9jb29yZC55KCkp
OwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzE3LDYgKzcyMSw3IEBAIEJNUEltYWdlUmVhZGVy
OjpQcm9jZXNzaW5nUmVzdWx0IEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YShib29s
IGluUkxFLCBpCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb21wb25lbnQocGl4ZWwsIDIp
LCBhbHBoYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXItPnNl
dExhc3REZWNvZGVkUm93KG1fY29vcmQueSgpKTsKIAogICAgICAgICAvLyBTdWNjZXNzLCBrZWVw
IGdvaW5nLgogICAgICAgICBtX2RlY29kZWRPZmZzZXQgKz0gcGFkZGVkTnVtQnl0ZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDVmNjE5M2I4ZjllMWJhOTM3YjZlM2ZjNzMxNzQ5
MjQzNGRhYWUyZGEuLjcxOThhMTFjMWYxNTY4MDBjN2FiYjFmZmVhNDAxYjJjNzU5MDg1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxNCBAQCBib29sIEdJ
RkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWdu
ZWQgY2hhciogcm93QnVmZgogICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHlCZWdp
biwgMCwgMCwgMCwgMCk7CiAgICAgICAgIH0KICAgICB9CisgICAgYnVmZmVyLnNldExhc3REZWNv
ZGVkUm93KHlCZWdpbik7CiAKICAgICAvLyBUZWxsIHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cg
ZGF0YSBpZiBuZWVkIGJlLgotICAgIGlmIChyZXBlYXRDb3VudCA+IDEpCisgICAgaWYgKHJlcGVh
dENvdW50ID4gMSkgewogICAgICAgICBidWZmZXIuY29weVJvd05UaW1lcyh4QmVnaW4sIHhFbmQs
IHlCZWdpbiwgeUVuZCk7CisgICAgICAgIEFTU0VSVCgoeUVuZCAtIDEpID49IDApOworICAgICAg
ICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3coeUVuZCAtIDEpOworICAgIH0KIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMzkwLDYgKzM5NCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0
RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgICAgICAgZm9yIChpbnQg
eSA9IHByZXZSZWN0LnkoKTsgeSA8IHByZXZSZWN0Lm1heFkoKTsgKyt5KSB7CiAgICAgICAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gcHJldlJlY3QueCgpOyB4IDwgcHJldlJlY3QubWF4WCgpOyAr
K3gpCiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRSR0JBKHgsIHksIDAsIDAsIDAs
IDApOworICAgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoKHByZXZSZWN0LndpZHRoKCkgPiAwKSAm
JiAocHJldlJlY3QuaGVpZ2h0KCkgPiAwKSkKICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0
SGFzQWxwaGEodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5MWYx
MjM2YjM1OWJjMTU1YWYzN2M3ZmUyY2UzNmVhNzNjNTA5NDk2Li40ODYxY2I2NjcyMzk3OGNiZGIz
Nzc4ZTBiMzc4MTk4ZWViOWIwNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
QEAgLTU3Nyw2ICs1NzcsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5l
cygpCiAgICAgaWYgKHR1cmJvU3dpenpsZWQoaW5mby0+b3V0X2NvbG9yX3NwYWNlKSkgewogICAg
ICAgICBBU1NFUlQoIW1fc2NhbGVkKTsKICAgICAgICAgd2hpbGUgKGluZm8tPm91dHB1dF9zY2Fu
bGluZSA8IGluZm8tPm91dHB1dF9oZWlnaHQpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRMYXN0
RGVjb2RlZFJvdyhpbmZvLT5vdXRwdXRfc2NhbmxpbmUpOwogICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciogcm93ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyLmdldEFk
ZHIoMCwgaW5mby0+b3V0cHV0X3NjYW5saW5lKSk7CiAgICAgICAgICAgICBpZiAoanBlZ19yZWFk
X3NjYW5saW5lcyhpbmZvLCAmcm93LCAxKSAhPSAxKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTYyOCw2ICs2MjksNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNj
YW5saW5lcygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhkZXN0WSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDEzOGQ1YzUxMjkxZWEyNmY2OTY0M2Y2YWE0NDg4NGJiNWM2NDgwZWYuLjgxMGNhYTcyMDgy
MTlmZmY2Y2Y2Mjk3NGU4ZWY3ZWYxYjM0NTFiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCkBAIC01MjAsNiArNTIwLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJs
ZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogCiAgICAgaWYg
KG5vblRyaXZpYWxBbHBoYSAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCiAgICAgICAgIGJ1ZmZlci5z
ZXRIYXNBbHBoYShub25Ucml2aWFsQWxwaGEpOworICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJv
dyh5KTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNv
ZGVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lh
L0ltYWdlRGVjb2RlclNraWEuY3BwCmluZGV4IDVjYzEzMmM0ZDQ4NDAwYjgxNTJlZTVmNGZlZjIy
NDJjNDI5ZGI2YjYuLjEzMzE4YTM4NDZmZjVhZWJkOTMwMmFkMzJlMTUzMjNkZDg3MzhjYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1h
Z2VEZWNvZGVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcApAQCAtNTcsNiArNTcsNyBAQCBJbWFnZUZy
YW1lJiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiB2b2lk
IEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKICAgICBtX2JpdG1hcC5iaXRtYXAoKS5y
ZXNldCgpOworICAgIG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVF
bXB0eTsKICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoKQogICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFw
IGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQpAQCAtNzYsNiArNzcsNyBAQCBib29sIElt
YWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogCiAgICAg
bV9iaXRtYXAuYml0bWFwKCkucmVzZXQoKTsKICAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIG90
aGVyQml0bWFwID0gb3RoZXIubV9iaXRtYXA7CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IG90aGVy
Lm1fbGFzdERlY29kZWRSb3c7CiAgICAgcmV0dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlU
bygmbV9iaXRtYXAuYml0bWFwKCksIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKIH0K
IApAQCAtODQsNiArODYsNyBAQCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRo
LCBpbnQgbmV3SGVpZ2h0KQogICAgIC8vIHNldFNpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQg
b25jZSwgaXQgbGVha3MgbWVtb3J5IG90aGVyd2lzZS4KICAgICBBU1NFUlQoIXdpZHRoKCkgJiYg
IWhlaWdodCgpKTsKIAorICAgIG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fYml0bWFwLmJp
dG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBu
ZXdIZWlnaHQpOwogICAgIGlmICghbV9iaXRtYXAuYml0bWFwKCkuYWxsb2NQaXhlbHMoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
MDgyZTMzZGRiMmEzNjBlMzg4OGQ3OWIwM2E5YzIxY2NkYjhjMDNjMi4uYTlmOThhZDgwZjZmMTk4
MDU4ZDJhZmRlYmI2YTQwOWUyM2FlNzlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCkBAIC0xMzIsMTkgKzEzMiwyNiBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoV2ViUElVcGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0ZXMsIGRhdGFTaXplKSkg
ewotICAgIGNhc2UgVlA4X1NUQVRVU19PSzoKLSAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFn
ZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKLSAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsK
LSAgICAgICAgbV9kZWNvZGVyID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBW
UDhfU1RBVFVTX1NVU1BFTkRFRDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6
CisgICAgY29uc3QgVlA4U3RhdHVzQ29kZSBzdGF0dXMgPSBXZWJQSVVwZGF0ZShtX2RlY29kZXIs
IGRhdGFCeXRlcywgZGF0YVNpemUpOworICAgIGlmIChzdGF0dXMgIT0gVlA4X1NUQVRVU19PSyAm
JiBzdGF0dXMgIT0gVlA4X1NUQVRVU19TVVNQRU5ERUQpIHsKICAgICAgICAgV2ViUElEZWxldGUo
bV9kZWNvZGVyKTsKICAgICAgICAgbV9kZWNvZGVyID0gMDsKICAgICAgICAgcmV0dXJuIHNldEZh
aWxlZCgpOwogICAgIH0KKyAgICBpbnQgbGFzdFkgPSAwOworICAgIGlmICghV2ViUElEZWNHZXRS
R0IobV9kZWNvZGVyLCAmbGFzdFksIDAsIDAsIDApKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVk
KCk7CisgICAgQVNTRVJUKGxhc3RZID49IDApOworICAgIEFTU0VSVChsYXN0WSA8PSBzaXplKCku
aGVpZ2h0KCkpOworICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhsYXN0WSA/IGxhc3RZIC0g
MSA6IDApOworCisgICAgaWYgKHN0YXR1cyA9PSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKTsKKyAgICBXZWJQSURlbGV0ZShtX2RlY29kZXIpOworICAgIG1fZGVjb2RlciA9
IDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDNmZWI1N2M1NDQ1ZjRkYjhk
ZDljNmJlNzhhNGMwYWJlYjkzZDQwMjMuLjAxZTUzMjdjYmM2MTU1Njg2ZGU3ZDZhMjAxYzdhZTIw
OGVhNGRhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
MzExLDcgKzMxMSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBMYXlv
dXRVbml0IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIExheW91dFVuaXQg
dXNhYmxlSGVpZ2h0ID0gY0hlaWdodCAtIDI7CiAKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICBJbWFnZSogaW1h
Z2UgPSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2Ut
PmltYWdlKCkuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJv
ck9jY3VycmVkKCkgJiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2FibGVXaWR0aCA+PSBpbWFnZS0+
d2lkdGgoKSAmJiB1c2FibGVIZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSB7CiAgICAgICAgICAg
ICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3Rv
cihmcmFtZSgpKTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgog
ICAgICAgICAgICAgICAgIGlmIChjZW50ZXJZIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2Vu
dGVyWSA9IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRC
b3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDEsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRl
clkgKyAxKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCks
IHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFpbnRPZmZz
ZXQgKyBpbWFnZU9mZnNldCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQ
b2ludChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291
cmNlT3Zlciwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAg
ICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC00NDIsNyAr
NDQyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QKICAgICBpZiAoIW1faW1hZ2VSZXNvdXJj
ZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSB8fCBhbGln
bmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWcgPSBtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKTsKKyAgICBJbWFn
ZSogaW1nID0gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291
cmNlLT5pbWFnZShhbGlnbmVkUmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0
KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3Np
dGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBJbWFnZSogaW1hZ2UgPSBt
X2ltYWdlUmVzb3VyY2UtPmltYWdlKCkuZ2V0KCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgYWxp
Z25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZVJlc291cmNl
LT5pbWFnZShhbGlnbmVkUmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCks
IHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7Cisg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltZywgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVk
UmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCks
IHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6Ym94U2hhZG93
U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CkBAIC00ODEsNyArNDgxLDcgQEAgYm9v
bCBSZW5kZXJJbWFnZTo6YmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdAogCiAgICAgLy8gQ2hl
Y2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNC
aXRtYXBJbWFnZSgpIHx8IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICgh
aW1hZ2UgfHwgIWltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwgdG9SZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZShpbWFnZSktPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDk4ODZmYjMxOTgyMzUzZDY0MDIzZjU3
NGIwMGMxNGEyMGZiMWZjMmEuLmYyMjQ0N2Y3NTE1MzEzN2JlOWFlZGYxOTkzYzUzMWExMDk3YmU2
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNs
dWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRpbGVkQmFj
a2luZy5oIgpAQCAtMTA3OSw2ICsxMDgwLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVJbWFnZUNvbnRlbnRzKCkKICAgICBpZiAoIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICAvLyBXZSBoYXZlIHRvIHdhaXQgdW50aWwgdGhlIGltYWdl
IGlzIGZ1bGx5IGRlY29kZWQgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIGxheWVyLgorICAgIGlm
IChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpICYmICF0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKGlt
YWdlKS0+Y3VycmVudEZyYW1lSXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm47CisKICAgICAv
LyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXll
ciBmb3IgdGhlIGltYWdlLgogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdl
KGltYWdlKTsKICAgICB1cGRhdGVEcmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTZiZTVjZDQxNmJjZGUyNmUw
YTg1NWJlMWFkY2VhMmI0M2ZjMGI5NS4uYTE5NmU3NWY4YTlkZjFhMjhkYzZlN2JhOTA1NGU5NmYx
NTUxNTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgog
I2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2lu
Y2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTEyNywxNCArMTI4LDE0IEBAIHZv
aWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYpCiAgICAgICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRl
eHQodGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29u
dGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgICAgIElt
YWdlKiBpbWFnZSA9IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RS
ZWN0ID0gbV9vYmplY3RCb3VuZGluZ0JveDsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3Jj
UmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAg
ICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1h
Z2VFbGVtZW50Kj4obm9kZSgpKTsKICAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnByZXNl
cnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAg
ICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAg
ICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKaW5kZXggM2JhZWEyN2M5
ZjU1NDgzYWYwNThhYWZiNjE4MTA3MmUyNDRhMDZkMC4uY2RlMTM5ZmNlY2FlNTgzOGYzNjI1Zjlj
ODc5OTBhMzc3MjEwOTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VD
Ry5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0
IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRl
RnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9
IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gZnJhbWUoQWRvcHRDRiwgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAppbmRleCBmYjBkZjdjYWZmY2ExZmEwYjM3ZDZlNjNhOWVl
MTcwODI4ODYwNjA1Li41ZDg2NGEyN2JhOTEwNjAwMzU5MjkxYTU3NmIyNDY0NmIwNTdlMWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEs
IGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1h
Z2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGlu
ZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0
RnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9
IGFkb3B0UHRyKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiBXZWJJbWFnZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153219</attachid>
            <date>2012-07-19 04:04:42 -0700</date>
            <delta_ts>2012-07-19 04:06:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120719200439.patch</filename>
            <type>text/plain</type>
            <size>96112</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRjMWJjN2Q1YmNiOGU2
NmMwMWY5OGViNzc2ZDBkZmI0NDk2MzhhMC4uYjBhOGYwYzU5NTlhZjE4N2ZlZjUyNjU3M2NmYTIw
YmZjZjEzOWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxMi0wNy0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9J
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0lt
YWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpsYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpzZXRMYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAo
V2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNr
Z3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAg
ICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQp
OgorCiAyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlZmFjdG9yaW5nIG1ldGFkYXRhIG9mIEJpdG1hcEltYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyY2E0MGZiZTUyODM0NjllMjNlNTYxMDIwNzBlYWVmYzM3
NDJjNDAwLi42MGEwZmJjNjBhOGRiMTdkNzVkMzJiODQxN2ZmMGIxODE1ZDA3ZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA3LTE3ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBwYXJhbGxl
bCBpbWFnZSBkZWNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdXRob3JlZCBieSBIdWFuZyBEb25nc3VuZyBhbmQgS3dhbmcgWXVsIFNlby4KKwor
ICAgICAgICBNYWtlIGltYWdlIGRlY29kaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQg
dGhlIG1haW4gdGhyZWFkIGNhbiBzcGVuZCBtb3JlCisgICAgICAgIHRpbWUgaW4gbG9hZGluZywg
cGFyc2luZywgc2NyaXB0aW5nIGFuZCBsYXlvdXQgd2hpbGUgaW1hZ2UgZGVjb2RpbmcgdGhyZWFk
cyBkZWNvZGUKKyAgICAgICAgaW1hZ2VzIGluIHRoZSBiYWNrZ3JvdW5kLgorCisgICAgICAgIFJl
ZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L3B1Yj9pZD0xMmdmN01oTkhm
dXBlUjNHZFJGLWgyVnpnODZ2aUNid1hxOF9KQnlIS2xnMAorICAgICAgICBmb3IgZGV0YWlsZWQg
ZXhwbGFuYXRpb24uCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKKzIwMTItMDctMTcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgUHJl
cGFyZSBmb3IgcGFyYWxsZWwgaW1hZ2UgZGVjb2Rlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZmVjZDQzMWQ5ODYzZjgxM2U1OTliYTdjZGI5YzMwOGQzNDI4MjFjOS4uMTNmYmMwMDExMTk2MDFk
ZmNjYTExZTJlNjA2NTA5ODYzYjFmNWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEyMDUs
OSArMTIwNSwxMSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVXb3JrZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRh
dGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZTAzMmEzYmE2M2E2NTQzODdmMDk0Mjk0YjFkNWM0MTU0MjEwNThkOC4uYjU3ZWIy
MmJiYjI5Y2M0ZWNkMjJkZDdmZTQ5ZmQ5ZTRkZGU1Zjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zMjA5LDYgKzMyMDksMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjNDk1OTEwMzk1NjA3ZWUx
MTBjMzJhNjYyMjkzZTdhYmJlZGEzZDQwLi43NzE1OTdhZDFjZTdmZmZiOWQ3NThhYjhjN2Y2YjA1
OWNmZjgxOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk2NSwxMCArOTY1LDEyIEBAIFNPVVJDRVMgKz0g
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBcCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRl
ZEZvbnREYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApA
QCAtMjA4NiwxMSArMjA4OCwxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludEhhc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1M
YXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBcCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGE2NmMzOWJiODU2ZDY5MGQ3ZDA1NWU1ODUzNjEwMDRmMzZm
ODliZGIuLjY4NzE3MTliOThkNGNiY2I3NWJlMjBlOGU1ZGRhZmQ4NzU3MWIzMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM1MDksMTEgKzM1MDksMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyYTc0NGFmNjkzOGViNGY4YzAwNjI5
ZTZjOTA2NTcyNjQ4NDVmMGRjLi5hYzVkMzIwNjhhYmM3ZGY4ZGQ1ZWU3MTA3MmVlMmRlNmE1YzRh
YWFjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtMjk0MDYsNiArMjk0MDYsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQ
YXRoVHJhdmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjk0MzQsNiAr
Mjk0NDYsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGU2MjhlYjNmOGU5
Zjc5OGZlODAzZGFlMmFiNTQ1MTFkMzM1MTZmMC4uY2NiNWY2ZWE1YTkyOTE3MjUzY2YyN2VjNWZj
Yjg0YzU3NWMyZDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQyMCw2ICsxNDIwLDggQEAKIAkJNEIzMDQzQ0QwQUUwMzcz
QjAwQTgyNjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4MDkzMEVFRjUw
RDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFn
ZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OworCQk1
QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzNDgwOTEwRUVG
NTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsgfTsKKwkJNUIz
NDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5MjBFRUY1MEQ0
MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJNEI2RkE2RjQw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4
NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNl
Q0YuY3BwICovOyB9OwpAQCAtODUyNCw2ICs4NTI2LDggQEAKIAkJNEIzMDQzQ0IwQUUwMzczQjAw
QTgyNjQ3IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRp
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFy
dFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjMwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NjgsNiArMTk1NzIsOCBAQAogCQkJCUE4MEEzOEZE
MEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4
MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUz
ODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4MDkxMEVFRjUw
RDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJCQkJNUIzNDgw
OTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggKi8sCiAJCQkJ
QjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICov
LAogCQkJKTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NTI3LDYgKzI0NTMzLDcgQEAKIAkJCQk3RUU2
ODQ2RjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxMCw2ICsyNzcxNyw3IEBACiAJCQkJNTE0Qzc2N0UwQ0U5
MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFC
NDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQz
MTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDMxNjBBNjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0ZDRjNjE5OTEz
ZDFiMzQ2OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2MGM0ODFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtNjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc1Vu
aWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCisgICAg
LCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5LDEyIEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICAvLyBOT1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBoZXJlLCB0aGF0
IHdpbGwgdHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGkuZS4gbmV2ZXIt
ZGVjb2RlZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFzcykgZnJhbWVz
IQotICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0Nv
bXBsZXRlKQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJyZW50IGZyYW1l
LCBiZWNhdXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAgICAgICAvLyBp
biByZXRhaW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRoaXMgZGVjb2Rl
ZCBpbWFnZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIHJlbW92ZWQg
aGVyZSwgdGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0ZSBib3guCisg
ICAgICAgIC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHJl
dGFpbmVkIG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmIChtX2ZyYW1lc1tp
XS5tX2ZyYW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJyZW50RnJhbWUg
IT0gaSkKICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRy
dWUpID8gMSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVz
Q2xlYXJlZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZy
YW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2FjaGluZ0ZyYW1l
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4aXN0IHdoZW4g
bV9pc0NvbXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3IGZyYW1lIGV2
ZW4gaWYgbV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdl
ZCBmb3IgZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4ID49IG1fZnJh
bWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2lzQ29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAgIG1faXNDYWNo
aW5nRnJhbWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAgICAgICAgbV9p
c0NhY2hpbmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNjcsMTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBp
bmRleCkKICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2Zy
YW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4
KGluZGV4KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4LCByZXRhaW5l
ZE1vZGVSZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJlY2VpdmVGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURh
dGEpCitib29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdAogewor
ICAgIHJldHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWluZWRNb2RlSW1h
Z2UtPnJldGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkaWRS
ZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGlt
YWdlRnJhbWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVk
KQoreworICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBpbmRpcmVjdGx5
IGluIHRoaXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVy
KG1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8vIG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVwbGFjZWQgd2l0
aCBuZXcgZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xlYXIgbV9mcmFt
ZSwgdGhlIG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQgZm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0IGJlIHJlbW92
ZWQgaGVyZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpbmRleF0u
Y2xlYXIodHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1l
c0NsZWFyZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZyYW1lRGF0YShp
bWFnZUZyYW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwpA
QCAtMjg4LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAgICAgICAvLyB0
byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRlcyAtPSBtX2Rl
Y29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAw
OwotICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKSB7CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0
aGlzLCBkZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tpbmRleF0ubV9p
c0NvbXBsZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCkKKyAgICAg
ICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywgSW50UmVjdChJ
bnRQb2ludCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMzA5LDcgKzM0
NSwxMyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFtZUR1cmF0aW9u
QXRJbmRleCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsK
KyAgICAvLyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29kZWQgYnkgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBtX2lzQ29tcGxl
dGUgaXMgdHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiBt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZy
YW1lSXNDb21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2NjlhMDUxMjFi
NS4uYzRkNTZmNzVlNTI3NTVmNDA1MDRiODhkZTc3ZWJhNjllNDBiOWY5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRtYXBJbWFnZSA6
IHB1YmxpYyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBj
bGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVk
SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZy
aWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0xOTIsNiArMTk1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgdmlydHVhbCBi
b29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBs
ZXRlKCk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7
CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwpA
QCAtMjAxLDcgKzIwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VP
YnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwg
Y29uc3QgSW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1l
QXRJbmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZh
bHNlLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjkzLDYgKzI5Nyw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7CiAgICAgdmlydHVh
bCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCByZXRhaW5lZE1vZGVS
ZW5kZXJpbmcoKSBjb25zdDsKKwogICAgIEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1h
Z2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CkBAIC0zMTcsNiArMzIzLDgg
QEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1Np
emU7IC8vIFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWlu
ZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNp
emVfdCBtX2ZyYW1lQ291bnQ7CiAKKyAgICBSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+
IG1fcmV0YWluZWRNb2RlSW1hZ2U7CisKICAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8g
V2hldGhlciBvciBub3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgogICAgIGJvb2wgbV9jaGVj
a2VkRm9yU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUg
Zm9yIHNvbGlkIGNvbG9yLgogCkBAIC0zMjcsNiArMzM1LDggQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9zaXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0
aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KICAgICBt
dXRhYmxlIGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxlIGJvb2wg
bV9oYXZlRnJhbWVDb3VudCA6IDE7CisKKyAgICBib29sIG1faXNDYWNoaW5nRnJhbWUgOiAxOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCmluZGV4IDAyMDMzNGVjZmRkNTZjZWRhNDZlN2FhOWUzMjFlZWYxNTkyZDQzOTEuLjEw
OTlkYjVjYWNhYmU2MDQyNjdjOThjM2M3NTVkNGQxY2Q3ZDY2ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM1LDkgKzM1LDEz
IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhcmFs
bGVsSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZXNvbHV0aW9uVGhy
ZXNob2xkRm9yUGFyYWxsZWwgPSA1MTIgKiA1MTI7CisKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RF
Ul9ET1dOX1NBTVBMSU5HKQogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVj
b2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7CiAjZW5kaWYKQEAgLTY2LDExICs3MCwxNSBAQCBJbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVz
dHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlm
IChtX2RlY29kZXIpCisgICAgICAgIC8vIE9ubHkgR0lGIGRlY29kZXIgaW1wbGVtZW50cyBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUuCisgICAgICAgIGlmIChtX2RlY29kZXIgJiYgIW1fcGFyYWxsZWxE
ZWNvZGVyKQogICAgICAgICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xl
YXJCZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9wYXJh
bGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7CisKICAg
ICBkZWxldGUgbV9kZWNvZGVyOwogICAgIG1fZGVjb2RlciA9IDA7CiAgICAgaWYgKGRhdGEpCkBA
IC04OCw2ICs5NiwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFt
aW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlh
dGUgZGVjb2RlciBwbHVnaW4uCiAgICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFp
bGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxs
IGJlCiAgICAgLy8gbWFkZS4KKworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkgewor
ICAgICAgICBBU1NFUlQobV9kZWNvZGVyKTsKKyAgICAgICAgbV9wYXJhbGxlbERlY29kZXItPnNl
dERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIG1fZGVjb2RlciA9IHN0YXRpY19jYXN0PE5h
dGl2ZUltYWdlU291cmNlUHRyPihJbWFnZURlY29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9w
dGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xMDIsMTEgKzExNywxNSBAQCB2b2lkIEltYWdlU291
cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAK
IFN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogeworICAgIGlm
IChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNv
ZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29k
ZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJj
ZTo6aXNTaXplQXZhaWxhYmxlKCkKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkp
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBtX2RlY29kZXIgJiYgbV9kZWNvZGVy
LT5pc1NpemVBdmFpbGFibGUoKTsKIH0KIApAQCAtMTE2LDYgKzEzNSw4IEBAIEludFNpemUgSW1h
Z2VTb3VyY2U6OnNpemUoUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RP
cmllbnRhdGlvbikKICAgICBpZiAoc2hvdWxkUmVzcGVjdE9yaWVudGF0aW9uID09IFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCisgICAgaWYgKG1f
cGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gbV9wYXJhbGxlbERlY29kZXIt
PnNpemUoKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5zaXplKCkgOiBJbnRT
aXplKCk7CiB9CiAKQEAgLTEyNSw2ICsxNDYsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCiAg
ICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rl
ci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAgICAg
cmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCkgOiBJ
bnRTaXplKCk7CiB9CiAKQEAgLTE0MCwyMyArMTYzLDEyMCBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6
OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0CiAKIGludCBJbWFnZVNv
dXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpCisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKICAgICByZXR1cm4gbV9kZWNvZGVy
ID8gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOwogfQogCiBz
aXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogeworICAgIGlmIChtX3BhcmFs
bGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIG1fZGVjb2Rl
ciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6
cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNv
dXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGJvb2wgcmV0YWluZWRNb2Rl
UmVuZGVyaW5nKQoreworICAgIEFTU0VSVCghKHJldGFpbmVkTW9kZVJlbmRlcmluZyAmJiBpbmRl
eCkpOworICAgIEFTU0VSVCghKHJldGFpbmVkTW9kZVJlbmRlcmluZyAmJiAhbV9vYnNlcnZlcikp
OworCisgICAgaWYgKCFtX2RlY29kZXIpIHsKKyAgICAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2
ZUZyYW1lQXRJbmRleChpbmRleCwgSW1hZ2VGcmFtZURhdGEoKSk7CisgICAgICAgIHJldHVybiBJ
bWFnZUZyYW1lRGF0YSgpOworICAgIH0KKworICAgIGlmICghcmV0YWluZWRNb2RlUmVuZGVyaW5n
IHx8ICFtX29ic2VydmVyIHx8IGZpcnN0RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgIHJldHVy
biBzZXJpYWxEZWNvZGUoaW5kZXgpOworCisgICAgaWYgKHNob3VsZERlY29kZVBhcmFsbGVsKCkp
IHsKKyAgICAgICAgcGFyYWxsZWxEZWNvZGUoKTsKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVE
YXRhKCk7CisgICAgfQorCisgICAgcmV0dXJuIHNlcmlhbERlY29kZShpbmRleCk7Cit9CisKK2Jv
b2wgSW1hZ2VTb3VyY2U6OnNob3VsZERlY29kZVBhcmFsbGVsKCkKK3sKKyAgICBBU1NFUlQobV9k
ZWNvZGVyKTsKKworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBpZiAoV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGZpbGVFeHQgPSBmaWxlbmFtZUV4
dGVuc2lvbigpOworICAgIGlmIChmaWxlRXh0ID09ICJpY28iIHx8IGZpbGVFeHQgPT0gImdpZiIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNTaXplQXZhaWxhYmxlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzaXplKCkuYXJlYSgpIDwgc19yZXNvbHV0
aW9uVGhyZXNob2xkRm9yUGFyYWxsZWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEltYWdlU291cmNlOjpmaXJzdEZyYW1lSXNDb21wbGV0ZSgp
Cit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisgICAgSW1hZ2VGcmFtZSogaW1hZ2VGcmFtZSA9
IDA7CisgICAgaWYgKCFtX3BhcmFsbGVsRGVjb2RlcikKKyAgICAgICAgaW1hZ2VGcmFtZSA9IG1f
ZGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIHJldHVybiBpbWFn
ZUZyYW1lICYmIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW1hZ2VGcmFtZSk7Cit9CisKK3ZvaWQg
SW1hZ2VTb3VyY2U6OnBhcmFsbGVsRGVjb2RlKCkKK3sKKyAgICBjcmVhdGVQYXJhbGxlbERlY29k
ZXJJZk5lZWRlZCgpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5kZWNvZGUoKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6ZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1l
RGF0YSkKK3sKKyAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgbV9vYnNlcnZlci0+ZGlkUmVj
ZWl2ZUZyYW1lQXRJbmRleCgwLCBpbWFnZUZyYW1lRGF0YSwgdHJ1ZSk7CisKKyAgICBpZiAoaW1h
Z2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2Rlcigp
OworfQorCit2b2lkIEltYWdlU291cmNlOjpjcmVhdGVQYXJhbGxlbERlY29kZXJJZk5lZWRlZCgp
Cit7CisgICAgaWYgKCFtX3BhcmFsbGVsRGVjb2RlcikKKyAgICAgICAgbV9wYXJhbGxlbERlY29k
ZXIgPSBhZG9wdFJlZihuZXcgUGFyYWxsZWxJbWFnZURlY29kZXIodGhpcywgbV9kZWNvZGVyKSk7
Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKCkKIHsKICAgICBB
U1NFUlQobV9vYnNlcnZlcik7CisgICAgbV9wYXJhbGxlbERlY29kZXItPmludmFsaWRhdGUoKTsK
KyAgICBtX3BhcmFsbGVsRGVjb2Rlci5jbGVhcigpOworfQorCitJbWFnZUZyYW1lRGF0YSBJbWFn
ZVNvdXJjZTo6c2VyaWFsRGVjb2RlKHNpemVfdCBpbmRleCkKK3sKKyAgICBib29sIHBhcmFsbGVs
RGVjb2RlckNhbmNlbGVkID0gZmFsc2U7CisgICAgLy8gUmVuZGVySW1hZ2UgYW5kIENhbnZhc0Vs
ZW1lbnQgY2FuIHNoYXJlIHRoZSBzYW1lIENhY2hlZEltYWdlLgorICAgIGlmIChtX3BhcmFsbGVs
RGVjb2Rlci5nZXQoKSkgeworICAgICAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgICAgIGNs
ZWFyUGFyYWxsZWxEZWNvZGVyKCk7CisgICAgICAgIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0g
dHJ1ZTsKKyAgICB9CisKICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0
ZUZyYW1lQXRJbmRleChpbmRleCk7Ci0gICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJ
bmRleChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworCisgICAgaWYgKG1fb2JzZXJ2ZXIpCisgICAg
ICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVE
YXRhLCBmYWxzZSAvKiByZXRhaW5lZE1vZGUgKi8sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkKTsK
KworICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0KIAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CisgICAgQVNTRVJUKCFt
X3BhcmFsbGVsRGVjb2Rlcik7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBJ
bWFnZUZyYW1lRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCAyZTY0ZDdkZWE3MzczNGU3ZjcwOGFmNjBkMjlhMzFiODQxMmYx
ODA5Li5jNDI3OWVjOWZjYWRkNDM0MjVkMzMyYmRkODM5YmI1NWNjNTI0YThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI5LDYgKzI5
LDkgQEAKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgorI2lmICFVU0UoQ0cpCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZl
ci5oIgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtNjUsNiArNjgsOSBAQCBjbGFzcyBJbWFnZU9yaWVudGF0aW9uOwog
Y2xhc3MgSW1hZ2VTb3VyY2VPYnNlcnZlcjsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6
ZTsKKyNpZiAhVVNFKENHKQorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXI7CisjZW5kaWYKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogI2lmIFVTRShDRykKQEAgLTE0Myw3ICsxNDksMTEgQEAgY29u
c3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJ
bmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLWNsYXNzIElt
YWdlU291cmNlIHsKK2NsYXNzIEltYWdlU291cmNlCisjaWYgIVVTRShDRykKKyAgICA6IHB1Ymxp
YyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiBwdWJsaWM6CiAgICAgZW51bSBBbHBoYU9wdGlvbiB7
CkBAIC0yMTAsMTcgKzIyMCwyNCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgp
IGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxs
aW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKKyAgICAvLyBOT1RFOiBDYWxsZXJzIHNo
b3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGlu
ZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIHZvaWQgcmVx
dWVzdEZyYW1lQXRJbmRleChzaXplX3QpOwotICAgIEltYWdlRnJhbWVEYXRhIGNyZWF0ZUZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIC8vIE5PVEU6IElmIEltYWdlU291cmNlIGhhcyBJbWFnZVNv
dXJjZU9ic2VydmVyLCB0aGlzIG1ldGhvZCBzZW5kcyB0aGUgcmVzdWx0IHZpYSBkaWREZWNvZGUo
KS4KKyAgICAvLyBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJlc3VsdC4gZS5n
LiBHcmFwaGljc0NvbnRleHQzRAorICAgIEltYWdlRnJhbWVEYXRhIHJlcXVlc3RGcmFtZUF0SW5k
ZXgoc2l6ZV90LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZyA9IGZhbHNlKTsKIAogI2lmIEVO
QUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgc3RhdGljIHVuc2lnbmVkIG1h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZElt
YWdlOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2ln
bmVkIG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsg
fQogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIC8vIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2Jz
ZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJik7
CisjZW5kaWYKKwogcHJpdmF0ZToKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5k
ZXgoc2l6ZV90KTsKICNpZiBVU0UoQ0cpCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRo
ZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KQEAgLTIzMyw4ICsy
NTAsMjAgQEAgcHJpdmF0ZToKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChJbWFnZUZyYW1lKikgY29uc3Q7CiAjZW5kaWYKIAorI2lmICFVU0UoQ0cpCisgICAgdm9pZCBj
cmVhdGVQYXJhbGxlbERlY29kZXJJZk5lZWRlZCgpOworICAgIHZvaWQgY2xlYXJQYXJhbGxlbERl
Y29kZXIoKTsKKyAgICBib29sIHNob3VsZERlY29kZVBhcmFsbGVsKCk7CisgICAgYm9vbCBmaXJz
dEZyYW1lSXNDb21wbGV0ZSgpOworICAgIHZvaWQgcGFyYWxsZWxEZWNvZGUoKTsKKyAgICBJbWFn
ZUZyYW1lRGF0YSBzZXJpYWxEZWNvZGUoc2l6ZV90KTsKKworICAgIFJlZlB0cjxQYXJhbGxlbElt
YWdlRGVjb2Rlcj4gbV9wYXJhbGxlbERlY29kZXI7CisjZW5kaWYKKwogICAgIE5hdGl2ZUltYWdl
U291cmNlUHRyIG1fZGVjb2RlcjsKICAgICBJbWFnZVNvdXJjZU9ic2VydmVyKiBtX29ic2VydmVy
OworCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwogI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmgKaW5kZXggNzJhZjcwOGM3ZWNkMTFm
ODE2ZThhOGUwMjcyOTAyNjA2MDgyMTQyOC4uZDMyMDc4MmQ4ZTgzMGMwNGU5OWYwMWUxNDNmZDI5
YTk0YTgzMjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBJbWFnZUZy
YW1lRGF0YTsKIC8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8g
YW4gSW1hZ2VTb3VyY2UsIGluY2x1ZGluZyBkZWNvZGluZy4KIGNsYXNzIEltYWdlU291cmNlT2Jz
ZXJ2ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4
KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYsIGJvb2wg
cmV0YWluZWQgPSBmYWxzZSwgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IGZhbHNlKSA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5JbWFnZVNvdXJjZU9ic2VydmVyKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI5Y2ZhZjU1MzExMzc4NDUwZDMzMTQ2NDJl
ZDFjODgzNjk0N2E1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsxLDMwNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VE
ZWNvZGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgUGFyYWxsZWxGcmFtZURhdGE7Cit2b2lkIGRpZERlY29kZVRh
c2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworc3RhdGljIEltYWdlRnJhbWVEYXRhIGNy
ZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKK1BhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjpQYXJhbGxlbEltYWdlRGVjb2RlcihQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
KiBvYnNlcnZlciwgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQorICAgIDogbV9vYnNlcnZlcihvYnNl
cnZlcikKKyAgICAsIG1faXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCisgICAgLCBtX2J5dGVzT2ZE
YXRhQ29uc3VtZWQoMCkKKyAgICAsIG1faW1hZ2VEZWNvZGVyKDApCit7CisgICAgaW5pdGlhbGl6
ZShkZWNvZGVyKTsKK30KKworUGFyYWxsZWxJbWFnZURlY29kZXI6On5QYXJhbGxlbEltYWdlRGVj
b2RlcigpCit7CisgICAgQVNTRVJUKCF2YWxpZCgpKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdl
RGVjb2Rlcjo6aW5pdGlhbGl6ZShJbWFnZURlY29kZXIqIGRlY29kZXIpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCkg
JiYgIWRlY29kZXItPnNpemUoKS5pc0VtcHR5KCkpOworCisgICAgbV9zaXplID0gZGVjb2Rlci0+
c2l6ZSgpOworICAgIG1fZmlsZW5hbWVFeHRlbnNpb24gPSBkZWNvZGVyLT5maWxlbmFtZUV4dGVu
c2lvbigpOworCisgICAgc2V0RGF0YShkZWNvZGVyLT5kYXRhKCksIGRlY29kZXItPmlzQWxsRGF0
YVJlY2VpdmVkKCkpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2lt
YWdlRnJhbWUuc2V0U2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAg
IG1faW1hZ2VEZWNvZGVyID0gZGVjb2RlcjsKKyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YSgw
LCBmYWxzZSk7CisgICAgLy8gQWZ0ZXIgdGhpcyBsaW5lLCBpdCBpcyBpbGxlZ2FsIGZvciB0aGUg
bWFpbiB0aHJlYWQgdG8gYWNjZXNzIG1faW1hZ2VEZWNvZGVyLgorCisgICAgLy8gVGhpcyBtdXN0
IGJlIHRoZSBsYXN0IGxpbmUgYmVjYXVzZSBJbWFnZURlY29kZVdvcmtlciBndWFyYW50ZWVzCisg
ICAgLy8gdGhlIHZpc2liaWxpdHkgb2YgbWVtYmVycyBpbiB0aGUgdGFzayB0aHJlYWQuCisgICAg
bV9kZWNvZGVXb3JrZXIgPSBJbWFnZURlY29kZVdvcmtlcjo6YWNxdWlyZVNoYXJlZFdvcmtlcigp
OworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAg
ICBpZiAobV9kZWNvZGVXb3JrZXIuZ2V0KCkpIHsKKyAgICAgICAgbV9kZWNvZGVXb3JrZXItPmlu
dmFsaWRhdGUoKTsKKyAgICAgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICB9CisgICAg
Ly8gVGhlIG1haW4gdGhyZWFkIGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0
aHJlYWRzIGRvIG5vdCBhY2Nlc3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisg
ICAgbV9pbWFnZURlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBtX2lzQWxsRGF0YVJlY2Vp
dmVkKTsKKworICAgIG1fc2l6ZSA9IEludFNpemUoKTsKKyAgICBtX2ZpbGVuYW1lRXh0ZW5zaW9u
ID0gIiI7CisKKyAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gZmFsc2U7CisgICAgbV9kYXRhLmNs
ZWFyKCk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gMDsKKworICAgIG1faW1hZ2VGcmFt
ZSA9IEltYWdlRnJhbWUoKTsKKworICAgIGlmIChtX2RhdGFGb3JUYXNrLmdldCgpKQorICAgICAg
ICBtX2RhdGFGb3JUYXNrLmNsZWFyKCk7CisKKyAgICBtX2ltYWdlRGVjb2RlciA9IDA7Cit9CisK
K3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CisgICAgbV9kYXRhID0gZGF0
YTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGVjb2RlKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisgICAgQVNT
RVJUKCFtX3NpemUuaXNFbXB0eSgpKTsKKworICAgIE93blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBleHRyYWN0U2VnbWVudEZvclRhc2soKTsKKyAgICBpZiAoIXNlZ21lbnQuZ2V0
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RlY29kZVdvcmtlci0+cG9zdFRhc2soYmluZCgm
UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZVRhc2ssIHRoaXMsIHNlZ21lbnQucmVsZWFzZSgp
KSk7Cit9CisKK1Bhc3NPd25QdHI8UGFyYWxsZWxJbWFnZURlY29kZXI6OkVuY29kZWREYXRhU2Vn
bWVudD4gUGFyYWxsZWxJbWFnZURlY29kZXI6OmV4dHJhY3RTZWdtZW50Rm9yVGFzaygpCit7Cisg
ICAgQVNTRVJUKG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA+PSAwICYmIG1fYnl0ZXNPZkRhdGFDb25z
dW1lZCA8PSBtX2RhdGEtPnNpemUoKSk7CisKKyAgICBpbnQgc2l6ZU9mU2VnbWVudCA9IG1fZGF0
YS0+c2l6ZSgpIC0gbV9ieXRlc09mRGF0YUNvbnN1bWVkOworICAgIGlmICghc2l6ZU9mU2VnbWVu
dCkKKyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PigpOworCisg
ICAgT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gc2VnbWVudChhZG9wdFB0cihuZXcgRW5jb2Rl
ZERhdGFTZWdtZW50KCkpKTsKKyAgICBjb25zdCBjaGFyKiBzcmNQdHIgPSBtX2RhdGEtPmRhdGEo
KSArIG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBzZWdtZW50LT5tX3NlZ21lbnQuYXBwZW5k
KHNyY1B0ciwgc2l6ZU9mU2VnbWVudCk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gbV9k
YXRhLT5zaXplKCk7CisKKyAgICBzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkID0gbV9pc0Fs
bERhdGFSZWNlaXZlZDsKKworICAgIHJldHVybiBzZWdtZW50LnJlbGVhc2UoKTsKK30KKworc3Ry
dWN0IFBhcmFsbGVsRnJhbWVEYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXJhbGxl
bEZyYW1lRGF0YSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgUGFyYWxsZWxGcmFtZURhdGEoUGFzc1JlZlB0cjxQYXJhbGxlbEltYWdlRGVjb2Rl
cj4gcGFyYWxsZWxEZWNvZGVyKQorICAgICAgICA6IG1fcGFyYWxsZWxEZWNvZGVyKHBhcmFsbGVs
RGVjb2RlcikKKyAgICAgICAgLCBtX2RlY29kZWRTZWdtZW50KCkKKyAgICAgICAgLCBtX3N0YXR1
cyhJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQorICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCisg
ICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHRydWUpCisgICAgeworICAgIH0KKworICAgIH5Q
YXJhbGxlbEZyYW1lRGF0YSgpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxQYXJhbGxlbElt
YWdlRGVjb2Rlcj4gbV9wYXJhbGxlbERlY29kZXI7CisgICAgT3duQXJyYXlQdHI8SW1hZ2VGcmFt
ZTo6UGl4ZWxEYXRhPiBtX2RlY29kZWRTZWdtZW50OworICAgIEltYWdlRnJhbWU6OkZyYW1lU3Rh
dHVzIG1fc3RhdHVzOworICAgIGJvb2wgbV9oYXNBbHBoYTsKKyAgICBib29sIG1fcHJlbXVsdGlw
bHlBbHBoYTsKKyAgICBJbnRSZWN0IG1fZGVjb2RlZFJlY3Q7Cit9OworCit2b2lkIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyOjpkZWNvZGVUYXNrKFBhc3NPd25QdHI8UGFyYWxsZWxJbWFnZURlY29kZXI6
OkVuY29kZWREYXRhU2VnbWVudD4gcGFzc1NlZ21lbnQpCit7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVyKTsKKworICAgIE93blB0cjxFbmNv
ZGVkRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBwYXNzU2VnbWVudDsKKworICAgIC8vIDEuIFNlbmQg
c2VnbWVudCBkYXRhIHRvIEltYWdlRGVjb2Rlci4KKyAgICBpZiAoIW1fZGF0YUZvclRhc2spIHsK
KyAgICAgICAgbV9kYXRhRm9yVGFzayA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGRvZXMgbm90IGFs
bG93IHR3byB0aHJlYWRzIHRvIGFjY2VzcyBvbmUgUmVmQ291bnRlZCBvYmplY3QuCisgICAgICAg
IC8vIG1fZGF0YUZvclRhc2sgaXMgdXNlZCBieSBib3RoIHRoZSBtYWluIHRocmVhZCBhbmQgdGhl
IHRhc2sgdGhyZWFkOgorICAgICAgICAvLyBUaGUgdGFzayB0aHJlYWQgY3JlYXRlcywgdXNlcyBh
bmQgcmVtb3ZlcyBtX2RhdGFGb3JUYXNrLiBUaGUgbWFpbiB0aHJlYWQgbWF5IHJlbW92ZQorICAg
ICAgICAvLyBtX2RhdGFGb3JUYXNrIGlmIHRoZSB0YXNrIHRocmVhZCBjb3VsZCBub3QgcmVtb3Zl
IG1fZGF0YUZvclRhc2suCisgICAgICAgIC8vCisgICAgICAgIC8vIFBhcmFsbGVsIGltYWdlIGRl
Y29kZXJzIG1hbmFnZSBtX2RhdGFGb3JUYXNrIGluIGEgdGhyZWFkLXNhZmUgd2F5LiBIb3dldmVy
LAorICAgICAgICAvLyB3ZSBjYW4ndCB0ZWxsIHRoZSB2ZXJpZmllciB0aGF0IHdlIGFyZSBzYWZl
IGJ5IHNpbXBseSBwYXNzaW5nIGEgbXV0ZXgKKyAgICAgICAgLy8gYmVjYXVzZSBsaWJkaXNwYXRj
aCBkb2VzIG5vdCBldmVuIGd1YXJhbnRlZSBkZWNvZGVUYXNrIGlzIGNhbGxlZCBieSB0aGUgc2Ft
ZSB0aHJlYWQKKyAgICAgICAgLy8gZWFjaCB0aW1lLiBTbyB0dXJuIG9mZiB0aGUgdmVyaWZpZXIg
aGVyZS4KKyAgICAgICAgbV9kYXRhRm9yVGFzay0+dHVybk9mZlZlcmlmaWVyKCk7CisjZW5kaWYK
KyAgICB9CisgICAgbV9kYXRhRm9yVGFzay0+YXBwZW5kKHNlZ21lbnQtPm1fc2VnbWVudCk7Cisg
ICAgbV9pbWFnZURlY29kZXItPnNldERhdGEobV9kYXRhRm9yVGFzay5nZXQoKSwgc2VnbWVudC0+
bV9pc0FsbERhdGFSZWNlaXZlZCk7CisKKyAgICBJbWFnZUZyYW1lKiBvbGRCdWZmZXIgPSBtX2lt
YWdlRGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIGludCBsYXN0
RGVjb2RlZFJvdyA9IG9sZEJ1ZmZlciA/IG9sZEJ1ZmZlci0+bGFzdERlY29kZWRSb3coKSA6IDA7
CisKKyAgICAvLyAyLiBEZWNvZGUgYW4gaW1hZ2UgaW5jcmVtZW50YWxseS4KKyAgICBJbWFnZUZy
YW1lKiBidWZmZXIgPSBtX2ltYWdlRGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOworICAg
IGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0
eSkgeworICAgICAgICBBU1NFUlQoIXNlZ21lbnQtPm1faXNBbGxEYXRhUmVjZWl2ZWQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMy4gTWFrZSBhIFBhcmFsbGVsRnJhbWVEYXRh
IGluIG9yZGVyIHRvIHBhc3MgaXQgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIFBhcmFsbGVsRnJh
bWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSA9IG5ldyBQYXJhbGxlbEZyYW1lRGF0YSh0aGlzKTsK
KyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgPSBidWZmZXItPnN0YXR1cygpOworICAg
IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhhID0gYnVmZmVyLT5oYXNBbHBoYSgpOworICAg
IHBhcmFsbGVsRnJhbWVEYXRhLT5tX3ByZW11bHRpcGx5QWxwaGEgPSBidWZmZXItPnByZW11bHRp
cGx5QWxwaGEoKTsKKworICAgIGludCBuZXdMYXN0RGVjb2RlZFJvdyA9IGJ1ZmZlci0+bGFzdERl
Y29kZWRSb3coKTsKKyAgICAvLyBPbmx5IGluIEJNUCwgbGFzdERlY29kZWRSb3cgY2FuIGJlIGJp
Z2dlciB0aGFuIG5ld0xhc3REZWNvZGVkUm93LgorICAgIGludCBsYXN0RGVjb2RlZE1pblJvdyA9
IHN0ZDo6bWluKGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAgaW50IGxh
c3REZWNvZGVkTWF4Um93ID0gc3RkOjptYXgobGFzdERlY29kZWRSb3csIG5ld0xhc3REZWNvZGVk
Um93KTsKKyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdCA9IEludFJlY3QoMCwg
bGFzdERlY29kZWRNaW5Sb3csIG1faW1hZ2VEZWNvZGVyLT5zaXplKCkud2lkdGgoKSwgbGFzdERl
Y29kZWRNYXhSb3cgLSBsYXN0RGVjb2RlZE1pblJvdyArIDEpOworCisgICAgLy8gNC4gQ3JlYXRl
IGRlY29kZWQgc2VnbWVudCBkYXRhIGluIG9yZGVyIHRvIHBhc3MgaXQgdG8gdGhlIG1haW4gdGhy
ZWFkLgorICAgIC8vICAgIElmIHRoZSBzdGF0dXMgaXMgRnJhbWVDb21wbGV0ZSwgdGhpcyBpcyBu
b3QgbmVlZGVkIGJlY2F1c2UgYSBOYXRpdmVJbWFnZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhl
IGRlY29kZXIgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIGlmIChwYXJhbGxlbEZyYW1lRGF0YS0+
bV9zdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKSB7CisgICAgICAgIGludCBzZWdt
ZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0LnNpemUoKS5hcmVhKCk7
CisgICAgICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50ID0gYWRvcHRBcnJh
eVB0cihuZXcgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhW3NlZ21lbnRTaXplXSk7CisKKyAgICAgICAg
SW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5t
X2RlY29kZWRTZWdtZW50LmdldCgpOworICAgICAgICBtZW1jcHkoc2VnbWVudEFkZHIsIGJ1ZmZl
ci0+Z2V0QWRkcigwLCBsYXN0RGVjb2RlZE1pblJvdyksIHNlZ21lbnRTaXplICogc2l6ZW9mKElt
YWdlRnJhbWU6OlBpeGVsRGF0YSkpOworICAgIH0gZWxzZSB7IC8vIEZyYW1lQ29tcGxldGUKKyAg
ICAgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOworICAgICAgICBtX2RhdGFG
b3JUYXNrLmNsZWFyKCk7CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKGRpZERl
Y29kZVRhc2tDYWxsYmFjaywgcGFyYWxsZWxGcmFtZURhdGEpKTsKK30KKwordm9pZCBkaWREZWNv
ZGVUYXNrQ2FsbGJhY2soUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgLy8gSWYgYSBjbGllbnQgY2FsbGVkIFBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpjbGVhcigpLCBQYXJhbGxlbEltYWdlRGVjb2RlciBpcyBpbnZh
bGlkYXRlZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT52
YWxpZCgpKQorICAgICAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9wYXJhbGxlbERlY29kZXItPmRp
ZERlY29kZVRhc2socGFyYWxsZWxGcmFtZURhdGEpOworICAgIGRlbGV0ZSBwYXJhbGxlbEZyYW1l
RGF0YTsKK30KKworSW1hZ2VGcmFtZURhdGEgY3JlYXRlSW1hZ2VGcmFtZURhdGEoUGFyYWxsZWxG
cmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEltYWdlRnJhbWVEYXRhIGltYWdl
RnJhbWVEYXRhOworICAgIGltYWdlRnJhbWVEYXRhLm1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbjsKKyAgICBpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgPSBwYXJhbGxl
bEZyYW1lRGF0YS0+bV9zdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICBp
bWFnZUZyYW1lRGF0YS5tX2hhc0FscGhhID0gIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSB8
fCBwYXJhbGxlbEZyYW1lRGF0YS0+bV9oYXNBbHBoYTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZURh
dGE7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29kZVRhc2soUGFyYWxs
ZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyAhPSBJbWFnZUZy
YW1lOjpGcmFtZUVtcHR5KTsKKworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0g
Y3JlYXRlSW1hZ2VGcmFtZURhdGEocGFyYWxsZWxGcmFtZURhdGEpOworCisgICAgaWYgKCFpbWFn
ZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUpCisgICAgICAgIGRpZERlY29kZVBhcnRpYWwoaW1hZ2VG
cmFtZURhdGEsIHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBlbHNlCisgICAgICAgIGRpZERlY29k
ZUNvbXBsZXRlKGltYWdlRnJhbWVEYXRhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6ZGlkRGVjb2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEsIFBhcmFs
bGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUocGFyYWxsZWxGcmFt
ZURhdGEpOworICAgIHN5bmNJbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGlt
YWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBtX2ltYWdlRnJhbWUuYXNOZXdOYXRpdmVJbWFnZSgpOwor
ICAgIG1fb2JzZXJ2ZXItPmRpZERlY29kZShpbWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFy
YWxsZWxJbWFnZURlY29kZXI6OmFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKFBhcmFsbGVs
RnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBjb25zdCBJbWFnZUZyYW1lOjpQ
aXhlbERhdGEqIGNvbnN0IHNlZ21lbnRBZGRyID0gcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2Rl
ZFNlZ21lbnQuZ2V0KCk7CisgICAgaW50IHNlZ21lbnRTaXplID0gcGFyYWxsZWxGcmFtZURhdGEt
Pm1fZGVjb2RlZFJlY3Quc2l6ZSgpLmFyZWEoKTsKKyAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEq
IGRlc3RBZGRyID0gbV9pbWFnZUZyYW1lLmdldEFkZHIoMCwgcGFyYWxsZWxGcmFtZURhdGEtPm1f
ZGVjb2RlZFJlY3QueSgpKTsKKyAgICBtZW1jcHkoZGVzdEFkZHIsIHNlZ21lbnRBZGRyLCBzZWdt
ZW50U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpKTsKK30KKwordm9pZCBQYXJh
bGxlbEltYWdlRGVjb2Rlcjo6c3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFs
bGVsRnJhbWVEYXRhKQoreworICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMgYXJlIG5lZWRlZCB0
byBjcmVhdGUgYSB2YWxpZCBuYXRpdmUgaW1hZ2UgaW4gSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpLgorICAgIG1faW1hZ2VGcmFtZS5zZXRTdGF0dXMocGFyYWxsZWxGcmFtZURhdGEtPm1f
c3RhdHVzKTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0SGFzQWxwaGEocGFyYWxsZWxGcmFtZURhdGEt
Pm1faGFzQWxwaGEpOworICAgIG1faW1hZ2VGcmFtZS5zZXRQcmVtdWx0aXBseUFscGhhKHBhcmFs
bGVsRnJhbWVEYXRhLT5tX3ByZW11bHRpcGx5QWxwaGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkaWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURh
dGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fZGVjb2RlV29ya2Vy
LT5pbnZhbGlkYXRlKCk7CisgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICAvLyBUaGUg
bWFpbiB0aHJlYWQgY2FuIHVzZSBtX2ltYWdlRGVjb2RlciBiZWNhdXNlIG90aGVyIHRocmVhZHMg
ZG8gbm90IGFjY2VzcyBtX2ltYWdlRGVjb2RlciBhZnRlciB0aGlzIGxpbmUuCisKKyAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2ltYWdlRGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERl
Y29kZSgpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFt
ZSA9IGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworICAgIG1fb2JzZXJ2ZXItPmRpZERlY29k
ZShpbWFnZUZyYW1lRGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZjBh
MzhhYjc4MzBiZTQ3ZmJmMDE5Zjc3MDJmZDAzMmQ1NzhmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCkBA
IC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyX2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVXb3JrZXIuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJQYXJh
bGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworY2xhc3Mg
UGFyYWxsZWxGcmFtZURhdGE7CisKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFBhcmFsbGVsSW1hZ2VEZWNvZGVyPiB7CitwdWJsaWM6Cisg
ICAgUGFyYWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciosIElt
YWdlRGVjb2RlciopOworICAgIH5QYXJhbGxlbEltYWdlRGVjb2RlcigpOworCisgICAgdm9pZCBp
bnZhbGlkYXRlKCk7CisKKyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOworCisgICAgdm9pZCBkZWNvZGUoKTsKKworICAgIGlubGluZSBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOyB9
CisgICAgaW5saW5lIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCitw
cml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZShJbWFnZURlY29kZXIqKTsKKworICAgIGlubGlu
ZSBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZURlY29kZXI7IH0KKworICAgIHN0
cnVjdCBFbmNvZGVkRGF0YVNlZ21lbnQgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShF
bmNvZGVkRGF0YVNlZ21lbnQpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEVuY29kZWREYXRhU2VnbWVudCgpIHsgfQorICAgICAgICBWZWN0
b3I8Y2hhcj4gbV9zZWdtZW50OworICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Cisg
ICAgfTsKKworICAgIFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBleHRyYWN0U2VnbWVu
dEZvclRhc2soKTsKKworICAgIC8vIE9ubHkgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSB0
YXNrIHRocmVhZC4KKyAgICB2b2lkIGRlY29kZVRhc2soUGFzc093blB0cjxFbmNvZGVkRGF0YVNl
Z21lbnQ+KTsKKworICAgIHZvaWQgZGlkRGVjb2RlVGFzayhQYXJhbGxlbEZyYW1lRGF0YSopOwor
ICAgIHZvaWQgZGlkRGVjb2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYsIFBhcmFsbGVsRnJhbWVE
YXRhKik7CisgICAgdm9pZCBhcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZy
YW1lRGF0YSopOworICAgIHZvaWQgc3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsK
KyAgICB2b2lkIGRpZERlY29kZUNvbXBsZXRlKEltYWdlRnJhbWVEYXRhJik7CisgICAgZnJpZW5k
IHZvaWQgZGlkRGVjb2RlVGFza0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKKyAgICBQ
YXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyKiBtX29ic2VydmVyOworCisgICAgSW50U2l6ZSBt
X3NpemU7CisgICAgU3RyaW5nIG1fZmlsZW5hbWVFeHRlbnNpb247CisKKyAgICAvLyBGb3IgaW5w
dXQgZGF0YQorICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZDsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2RhdGE7CisgICAgaW50IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKworICAgIC8v
IEZvciBvdXRwdXQgZGF0YQorICAgIEltYWdlRnJhbWUgbV9pbWFnZUZyYW1lOworCisgICAgLy8g
VGhlIHRhc2sgdGhyZWFkIGNhbiBhY2Nlc3Mgb25seSBtX2RhdGFGb3JUYXNrIGFuZCBtX2ltYWdl
RGVjb2Rlci4KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFGb3JUYXNrOworCisgICAg
SW1hZ2VEZWNvZGVyKiBtX2ltYWdlRGVjb2RlcjsKKworICAgIFJlZlB0cjxJbWFnZURlY29kZVdv
cmtlcj4gbV9kZWNvZGVXb3JrZXI7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJh
bGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3ZTE5NzA1
ZTFlMjljNWYzOWFkYmRjYmU5Nzc3OGExODFkOGU2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIu
aApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAw
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdl
RGVjb2Rlck9ic2VydmVyX2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcl9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CisKKy8vIElu
dGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGRlY29kaW5nIGNvbXBsZXRpb24gb2YgYW4g
UGFyYWxsZWxJbWFnZURlY29kZXIuCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVE
YXRhJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGFyYWxsZWxJbWFnZURlY29k
ZXJPYnNlcnZlcigpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wOWJhYjY2NTU3ZTFmNzE0Mjg3MTBkMzVlODU4ZjU5M2JlOGRkZGJiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgi
CisKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpjcmVhdGUoQml0bWFwSW1hZ2UqIGJpdG1hcEltYWdlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpKTsKK30KKworUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKEJpdG1hcEltYWdlKiBi
aXRtYXBJbWFnZSkKKyAgICA6IG1fYml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpCisgICAgLCBtX3Jl
dGFpbmVkTW9kZUNvdW50KDApCit7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6
Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsKK30KKworSW50U2l6ZSBSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2Rl
U2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNpemUoKTsKK30KKworYm9v
bCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgcG9pbnQpIGNv
bnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7Cisg
ICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmdldEhvdFNwb3QocG9pbnQpOworfQorCitib29sIFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkK
K3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBy
ZXR1cm4gbV9iaXRtYXBJbWFnZS0+ZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKK30KKwor
U3RyaW5nIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
cmV0dXJuIG1fYml0bWFwSW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7Cit9CisKK3ZvaWQgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwp
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
bV9iaXRtYXBJbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOworfQorCit1bnNp
Z25lZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGVjb2RlZFNpemUoKSBjb25zdAoreworICAg
IFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBt
X2JpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpzdGFydEFuaW1hdGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSkKK3sKKyAgICBS
ZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcElt
YWdlLT5zdGFydEFuaW1hdGlvbihjYXRjaFVwSWZOZWNlc3NhcnkpOworfQorCit2b2lkIFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVT
YXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5zdG9wQW5p
bWF0aW9uKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0
aW9uKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsK
KyAgICBtX2JpdG1hcEltYWdlLT5yZXNldEFuaW1hdGlvbigpOworfQorCitOYXRpdmVJbWFnZVB0
ciBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQor
eworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJl
dHVybiBtX2JpdG1hcEltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworfQorCiti
b29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJu
IG1fYml0bWFwSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisKK2Jvb2wgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKQoreworICAgIFJldGFp
bmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1h
cEltYWdlLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVy
IHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1hZ2UtPmRyYXcoY29udGV4
dCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Cit9CisKK2Jvb2wgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPm1heUZpbGxXaXRoU29saWRDb2xvcigpOworfQorCitDb2xvciBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2
ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNv
bGlkQ29sb3IoKTsKK30KKworUmV0YWluZWRNb2RlU2F2ZXI6OlJldGFpbmVkTW9kZVNhdmVyKGNv
bnN0IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKiBpbWFnZSwgYm9vbCByZXRhaW5lZCkKKyAgICA6
IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3JldGFpbmVkKHJldGFpbmVkKQoreworICAgIGlmICht
X3JldGFpbmVkKQorICAgICAgICBtX2ltYWdlLT5iZWdpblJldGFpbmVkTW9kZSgpOworfQorCitS
ZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNhdmVyKCkKK3sKKyAgICBpZiAobV9yZXRh
aW5lZCkKKyAgICAgICAgbV9pbWFnZS0+ZW5kUmV0YWluZWRNb2RlKCk7Cit9CisKK1JldGFpbmVk
TW9kZUJpdG1hcEltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKEltYWdlKiBpbWFnZSkK
K3sKKyAgICBBU1NFUlQoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSk7CisKKyAgICBCaXRtYXBJbWFn
ZSogYml0bWFwSW1hZ2UgPSBzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKTsKKyAgICBp
ZiAoIWJpdG1hcEltYWdlLT5tX3JldGFpbmVkTW9kZUltYWdlLmdldCgpKQorICAgICAgICBiaXRt
YXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZSA9IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpj
cmVhdGUoYml0bWFwSW1hZ2UpOworCisgICAgcmV0dXJuIGJpdG1hcEltYWdlLT5tX3JldGFpbmVk
TW9kZUltYWdlLmdldCgpOworfQorCitJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlm
UG9zc2libGUoSW1hZ2UqIGltYWdlKQoreworICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNCaXRt
YXBJbWFnZSgpKQorICAgICAgICByZXR1cm4gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFn
ZSk7CisgICAgcmV0dXJuIGltYWdlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zM2U3YThjMzg1NTczMGNlOWM5OWFlMTlmMTM4MDlkYWZjZjg1N2U1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorI2RlZmluZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZV9o
CisKKyNpbmNsdWRlICJJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJp
dG1hcEltYWdlOworY2xhc3MgUmV0YWluZWRNb2RlU2F2ZXI7CisKK2NsYXNzIFJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlIDogcHVibGljIEltYWdlIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0YWluZWRN
b2RlU2F2ZXI7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmV0YWluZWRNb2RlQml0
bWFwSW1hZ2U+IGNyZWF0ZShCaXRtYXBJbWFnZSopOworCisgICAgdmlydHVhbCB+UmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0
eU9yaWdpbigpIGNvbnN0OworCisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworCisgICAgdmlydHVh
bCBib29sIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGRlY29kZWRTaXplKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRp
b24oYm9vbCBjYXRjaFVwSWZOZWNlc3NhcnkgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cEFuaW1hdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworCisgICAgYm9vbCBjdXJyZW50
RnJhbWVJc0NvbXBsZXRlKCk7CisKKyAgICBpbmxpbmUgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3JldGFpbmVkTW9kZUNvdW50OyB9CisKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKworICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0
aFNvbGlkQ29sb3IoKTsKKyAgICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFn
ZSopOworCisgICAgaW5saW5lIHZvaWQgYmVnaW5SZXRhaW5lZE1vZGUoKSBjb25zdCB7IG1fcmV0
YWluZWRNb2RlQ291bnQrKzsgfQorICAgIGlubGluZSB2b2lkIGVuZFJldGFpbmVkTW9kZSgpIGNv
bnN0CisgICAgeworICAgICAgICBtX3JldGFpbmVkTW9kZUNvdW50LS07CisgICAgICAgIEFTU0VS
VChtX3JldGFpbmVkTW9kZUNvdW50ID49IDApOworICAgIH0KKworICAgIEJpdG1hcEltYWdlKiBt
X2JpdG1hcEltYWdlOworICAgIG11dGFibGUgaW50IG1fcmV0YWluZWRNb2RlQ291bnQ7Cit9Owor
CitjbGFzcyBSZXRhaW5lZE1vZGVTYXZlciB7CitwdWJsaWM6CisgICAgUmV0YWluZWRNb2RlU2F2
ZXIoY29uc3QgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UqLCBib29sIHJldGFpbmVkID0gdHJ1ZSk7
CisgICAgflJldGFpbmVkTW9kZVNhdmVyKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UqIG1faW1hZ2U7CisgICAgYm9vbCBtX3JldGFpbmVkOworfTsKKwor
CitSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFn
ZSopOworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKEltYWdlKik7
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlM2E1NjVkMTg2NTQyMTcxZjQwYTI2
MzUyYWFlODA2OThiODA5NGEwLi42Zjk1NzQwNzg4ZmMzZTY3NjNjZjIxZmJiNGY2ZjZkN2Y0MDAz
OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTc2NiwxMyArNzY2LDExIEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFn
ZSkgewogICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3SW1hZ2UpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIEFTU0VSVChuZXdJbWFnZSk7CiAKICAgICAgICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2Fs
bCB0bwogICAgICAgICAvLyBDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cg
Y2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBldmVyeSB0aW1lLgotICAgICAgICBpZiAobV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0g
bmV3SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVCghbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgfHwgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgIT0g
bmV3SW1hZ2UpOwogICAgICAgICAKICAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2Ug
PSBuZXdJbWFnZTsKICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBkYzZhNGQ0YmNiNzJjNmFlNzM0ZmU3MzlhOGM0Y2U3
ZDU2NDE1ZjQ3Li5kMDZiMWY3N2JmZGE1OTM0YmVkNzZjZTE5Mjk3MGEyYzRjMjgxMjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNTgsNiArNTgsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUp
CiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZh
bHNlKQogewogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJm
YWNlKCk7CiAgICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IDI1NDJjZjhmYTkx
ZDBiOGE3MTQzODVhNGUzMDIzOTY3ODNkOTYxZGQuLmI3NDI1YTllODE2ZmIzYmVlZGIzMmUwMDdk
N2QyYjhkMzE1MTJkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0x
NjUsNyArMTY1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdl
KiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAgZGVjb2Rlci5z
ZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVD
b3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZyYW1lRGF0
YSBpbWFnZUltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7Cisg
ICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLnJlcXVl
c3RGcmFtZUF0SW5kZXgoMCk7CiAgICAgICAgIGlmICghaW1hZ2VJbWFnZUZyYW1lRGF0YS5tX2lz
Q29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIE93blB0cjxOYXRp
dmVJbWFnZUNhaXJvPiBuYXRpdmVJbWFnZSA9IGFkb3B0UHRyKGltYWdlSW1hZ2VGcmFtZURhdGEu
bV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDc4MGJhNDRkODQxYTYwMDk5Mzk4
OGRhMjMxNDYzMDgyOWQ0MzM5M2QuLjM4N2YxZWY1MmVkZTkxMzhhNDBhZGRkYzlmNmQ1Nzg3NTZj
ODUyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgZGVj
b2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZy
YW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOwor
ICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVxdWVzdEZy
YW1lQXRJbmRleCgwKTsKICAgICAgICAgZGVjb2RlZEltYWdlLmFkb3B0Q0YoaW1hZ2VGcmFtZURh
dGEubV9mcmFtZSk7CiAgICAgICAgIGNnSW1hZ2UgPSBkZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwCmluZGV4IDczY2VlMjIwNWQ1ZjJkOTcxYjlkYWFhYjYzNDM1ZWNmNTE5MDBhZjAuLjQwNjNk
ZjA1NDhhMTdhMDYxMDBjNjA3ZmQyYzc4Mjk0ZDgxYmVkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCkBAIC04MSw2ICs4MSw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZhaWxhYmxl
KHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lzQ2FjaGluZ0Zy
YW1lKGZhbHNlKQogewogICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFn
ZSk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcAppbmRleCBiNDQ1NDk5M2I1Mjg3YzU0ZmY3NGIyOWIwZGUwMzA2Mjc2YWZiNDI0Li5mYTli
YzNlZDIwMzAyNWNhODAwYzliM2FhNzBiZDU1YjNmZjI2YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFn
ZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTMwOSwxMSArMzEwLDEyIEBAIHNpemVf
dCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/
IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDogMDsKIH0KIAotdm9pZCBJbWFnZVNv
dXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZUZyYW1lRGF0YSBJ
bWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOwogICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRh
ID0gY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBtX29ic2VydmVyLT5kaWRSZWNlaXZl
RnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSk7CisgICAgcmV0dXJuIGltYWdlRnJh
bWVEYXRhOwogfQogCiBJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCmluZGV4IGNkODc5NGU1MzljZmQ1MGVlODhh
NzdlMDdjNDVmODJhYjljZDczNTMuLjkwMDBmYzNkZmI1YjMwOWNkYWZhYTk5NzEyNWI3Yjk2MzVl
ZjNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnZnL0ltYWdlT3BlblZHLmNwcApAQCAtNjcsNiArNjcsNyBAQCBCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoVGlsZWRJbWFnZU9wZW5WRyogdGlsZWRJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGFzVW5pZm9ybUZy
YW1lU2l6ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0Nh
Y2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9zaXplLndpZHRoKCkgPiAwKTsKICAg
ICBBU1NFUlQobV9zaXplLmhlaWdodCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGU2NzVjZDQyYmYzMTA5NGVhYWJlZDE4
MTA4NDBlNzhmMGExNjQxYjMuLjk3YjU2NTJmM2Q0Nzk5N2ZkZTRlOTExMTgzZTgwNGE5ZTZhMGY1
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQu
Y3BwCkBAIC0yMTQsNiArMjE0LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFJbWFnZSog
aW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQog
ICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIGludCB3aWR0aCA9IGltYWdl
LT53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBpbWFnZS0+aGVpZ2h0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNE
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dDNEU2tpYS5jcHAKaW5kZXggZjU2ZDcyNDVhZDEwZWMzYWU4NWJlZDQyNzA5ZTZmNmI0
NzJiMmM1MC4uMWYwNDU5YzU0YWM1MDVmYzcyYmQzY2IwODZlYWVlMjY4OGE1ZTJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjIsNyArNjIsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgICAgICBkZWNvZGVyLnNl
dERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNv
dW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEltYWdlRnJhbWVEYXRh
IGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAg
IEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJhbWVBdElu
ZGV4KDApOwogICAgICAgICBpZiAoIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaGFzQWxwaGEgPSBpbWFnZUZyYW1lRGF0YS5t
X2hhc0FscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggMjgwMjkzM2E5OTZjNTNjMzg3MTJkNGRkNzExODdiM2E2NTVkOTBmMi4uNDVjZjZkYmM4ODk4
NDZmZGIzYWMwM2QzMjA3MWQwNzJkOWY2YjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCkBAIC0zMTUsOCArMzE1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZhbHVlKQogKi8K
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCiB7Ci0gICAgaWYgKGltYWdlID09IG1faW1hZ2UpCi0gICAgICAgIHJldHVybjsK
KyAgICBBU1NFUlQoaW1hZ2UgIT0gbV9pbWFnZSk7CiAKICAgICBtX2ltYWdlID0gaW1hZ2U7CiAg
ICAgaWYgKG1faW1hZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0ltYWdlV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VXeC5jcHAKaW5kZXggYjdjMjQ5NmM3M2I1MjY1ZjFkODUzNGUzMzdlZThjMjBmZTMw
Mjk4OS4uYjRiNTdiZTliYTM0MzA1ZDM0OWZiZjRjNGU1YjQ3Njc1ZmI4MzE0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKQEAgLTk1LDYg
Kzk1LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAp
CiAgICAgLCBtX2RlY29kZWRTaXplKDApCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiAg
ICAgLCBtX2ZyYW1lQ291bnQoMSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAg
ICAgbV9kZWNvZGVkU2l6ZSA9IGJpdG1hcC5HZXRXaWR0aCgpICogYml0bWFwLkdldEhlaWdodCgp
ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKGJpdG1hcC5HZXRXaWR0aCgpLCBiaXRtYXAuR2V0
SGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzJiNWRkYzJkZTMxZDAwNDA3MjdkNDRlOTUx
NjJhZGY2YmFjNzZjNy4uOTA0Zjg2Njg2MzMyZGE4YzMyNmRkMGY2ZWI1N2JiNDU1Njc3NWQ4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC0xNDAsNiArMTQwLDcgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURl
Y29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBo
YU8KIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCiAgICAgOiBtX2hhc0FscGhhKGZhbHNlKQor
ICAgICwgbV9sYXN0RGVjb2RlZFJvdygwKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAg
ICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNp
ZmllZCkKQEAgLTE2NSw2ICsxNjYsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRh
KCkKIHsKICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwogICAgIG1fYnl0ZXMgPSAwOworICAg
IG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAv
LyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoKSBjYWxscyB0aGlzCiAgICAgLy8gdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBv
dGhlciBmdW5jdGlvbnMgbGlrZSBpbml0RnJhbWVCdWZmZXIoKSBhbmQKQEAgLTE4Nyw2ICsxODks
NyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90
aGVyKQogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXplID0g
b3RoZXIubV9zaXplOwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOworICAgIG1f
bGFzdERlY29kZWRSb3cgPSBvdGhlci5tX2xhc3REZWNvZGVkUm93OwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBu
ZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKICAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUoYmFja2lu
Z1N0b3JlU2l6ZSk7CiAgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKICAgICBt
X3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIG1fbGFzdERlY29kZWRS
b3cgPSAwOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggOTExODc4ZTFkOTYyMjI2NDdlN2YzNDdlNzY2MmQyZmJlZjNmMDI4Yi4uMjcw
M2U0ODhiOGU2OGE2ZTk2Y2RjYjVhYjJlOTU2ZTdhNTVhZGViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTEx
OCw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5hdGl2ZUltYWdlUHRy
IGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29u
c3Q7CisgICAgICAgIGludCBsYXN0RGVjb2RlZFJvdygpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdERl
Y29kZWRSb3c7IH0KICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CiAgICAgICAgIEZyYW1lU3RhdHVz
IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVkIGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQpAQCAtMTI1LDYgKzEyNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNB
bHBoYShib29sIGFscGhhKTsKKyAgICAgICAgaW5saW5lIHZvaWQgc2V0TGFzdERlY29kZWRSb3co
aW50IGxhc3REZWNvZGVkUm93KSB7IG1fbGFzdERlY29kZWRSb3cgPSBsYXN0RGVjb2RlZFJvdzsg
fQogICAgICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmKTsKICAg
ICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByKSB7IG1fb3Jp
Z2luYWxGcmFtZVJlY3QgPSByOyB9CiAgICAgICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVz
IHN0YXR1cyk7CkBAIC0xODEsNiArMTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnltb3JlPwogICAgICAgICBD
b2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKKyAgICAgICAgaW50IG1fbGFzdERl
Y29kZWRSb3c7CiAgICAgICAgIEludFJlY3QgbV9vcmlnaW5hbEZyYW1lUmVjdDsgLy8gVGhpcyB3
aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBidWZmZXIgZXhjZXB0IGZvciBHSUYgZnJhbWVzIHdob3NlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVjdCB3YXMgc21hbGxl
ciB0aGFuIHRoZQpAQCAtMjI4LDYgKzIzMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAgIH0K
IAorICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KKwogICAgICAgICAvLyBMYXppbHktZGVjb2RlcyBlbm91Z2ggb2YgdGhlIGltYWdlIHRv
IGdldCB0aGUgc2l6ZSAoaWYgcG9zc2libGUpLgogICAgICAgICAvLyBGSVhNRTogUmlnaHQgbm93
IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFjdG9yIHRoZQogICAgICAg
ICAvLyBkZWNvZGUgY2FsbCBvdXQgYW5kIHVzZSBpdCBoZXJlLgpAQCAtMjc2LDYgKzI4MSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBwb2lu
dGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXpl
X3QpID0gMDsKIAorICAgICAgICAvLyBSZXR1cm5zIGFuIEltYWdlRGVjb2Rlci1vd25lZCBwb2lu
dGVyIHdpdGhvdXQgZGVjb2RpbmcgbW9yZS4KKyAgICAgICAgSW1hZ2VGcmFtZSogZmlyc3RJbWFn
ZUZyYW1lV2l0aG91dERlY29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpID8gMCA6ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07Cisg
ICAgICAgIH0KKwogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJv
b2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAg
ICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggNmE2NWU2MTdkMTllNjdiZmEyMTgwNTM4N2MxMTk1ZGE0ODIx
ZGI2ZC4uYmRjYWVmMDVlYTQwMTE1ZDA2Y2Y3MzVmMDkxOWFhYzRiMjE5ZWVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTcsNiArMTU3LDcgQEAg
aW50IEltYWdlUmVhZGVyOjpkZWNvZGUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBJbWFn
ZUZyYW1lKiBhRnJhbWUpCiAgICAgICAgICAgICBhRnJhbWUtPnNldFJHQkEoaSwgaiwgY3VyUHRy
WzBdLCBjdXJQdHJbMV0sIGN1clB0clsyXSwgMjU1KTsKICAgICAgICAgICAgIGN1clB0ciArPSAz
OwogICAgICAgICB9CisgICAgICAgIGFGcmFtZS0+c2V0TGFzdERlY29kZWRSb3coaik7CiAgICAg
fQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMGEy
NDhjN2QzYmNiMTFjYWQ3YzY3Njk1ZWI4Mjc1NzUyNzgyNDkzLi5mNzRkZGUzYTBkZmZhYWI3OWIw
NWFiNDM4YmQxZmY4ZmVhMmMyNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NjQsOCArNjQsMTUgQEAgdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogYm9vbCBCTVBJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJs
ZSgpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkgeworICAgICAg
ICAvLyBPbmx5IEJNUEltYWdlRGVjb2RlciBtdXN0IG1ha2UgbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
IGluIGlzU2l6ZUF2YWlsYWJsZSgpLAorICAgICAgICAvLyBiZWNhdXNlIHRoZSBkZWZhdWx0IHZh
bHVlIG9mIEltYWdlRnJhbWU6Om1fbGFzdERlY29kZWRSb3cgY2FuIGJlICJoZWlnaHQgLSAxIi4K
KyAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7CisgICAgICAgICAgICBtX2ZyYW1lQnVmZmVy
Q2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgICAgIH0KICAgICAgICAgZGVjb2RlKHRydWUpOworICAgIH0KIAogICAgIHJldHVybiBJbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAK
aW5kZXggNWMwMDU1MzRlY2Q5MjEzNGExM2IzMjk1ODkyNzc5MGYwN2FkMGY4MS4uNGY3ZTMxNzll
NjY2MzM4YTNhMTE0YjFiMjJhMWUzNDk0ODM5NDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIu
Y3BwCkBAIC02NCw4ICs2NCwxMSBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAoYm9v
bCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcHJvY2Vzc0luZm9I
ZWFkZXIoKSBzZXQgdGhlIHNpemUsIHNvIGlmIHRoYXQncyBhbGwgd2UgbmVlZGVkLCB3ZSdyZSBk
b25lLgotICAgIGlmIChvbmx5U2l6ZSkKKyAgICBpZiAob25seVNpemUpIHsKKyAgICAgICAgaWYg
KCFtX2lzVG9wRG93bikKKyAgICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyht
X3BhcmVudC0+c2l6ZSgpLmhlaWdodCgpIC0gMSk7CiAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KIAogICAgIC8vIFJlYWQgYW5kIHByb2Nlc3MgdGhlIGJpdG1hc2tzLCBpZiBuZWVkZWQuCiAg
ICAgaWYgKG1fbmVlZFRvUHJvY2Vzc0JpdG1hc2tzICYmICFwcm9jZXNzQml0bWFza3MoKSkKQEAg
LTYyNCw2ICs2MjcsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzUkxFRGF0YSgpCiAK
ICAgICAgICAgICAgICAgICBtX2RlY29kZWRPZmZzZXQgKz0gMjsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyhtX2Nvb3JkLnkoKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC03MTcsNiArNzIxLDcgQEAgQk1QSW1hZ2VSZWFkZXI6OlByb2Nl
c3NpbmdSZXN1bHQgQk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NOb25STEVEYXRhKGJvb2wgaW5STEUs
IGkKICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudChwaXhlbCwgMiksIGFscGhh
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERl
Y29kZWRSb3cobV9jb29yZC55KCkpOwogCiAgICAgICAgIC8vIFN1Y2Nlc3MsIGtlZXAgZ29pbmcu
CiAgICAgICAgIG1fZGVjb2RlZE9mZnNldCArPSBwYWRkZWROdW1CeXRlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKaW5kZXggNWY2MTkzYjhmOWUxYmE5MzdiNmUzZmM3MzE3NDkyNDM0ZGFh
ZTJkYS4uNzE5OGExMWMxZjE1NjgwMGM3YWJiMWZmZWE0MDFiMmM3NTkwODViYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTI0OSwxMCArMjQ5LDE0IEBAIGJvb2wgR0lGSW1hZ2VE
ZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBjaGFy
KiByb3dCdWZmCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoeCwgeUJlZ2luLCAwLCAw
LCAwLCAwKTsKICAgICAgICAgfQogICAgIH0KKyAgICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3co
eUJlZ2luKTsKIAogICAgIC8vIFRlbGwgdGhlIGZyYW1lIHRvIGNvcHkgdGhlIHJvdyBkYXRhIGlm
IG5lZWQgYmUuCi0gICAgaWYgKHJlcGVhdENvdW50ID4gMSkKKyAgICBpZiAocmVwZWF0Q291bnQg
PiAxKSB7CiAgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKHhCZWdpbiwgeEVuZCwgeUJlZ2lu
LCB5RW5kKTsKKyAgICAgICAgQVNTRVJUKCh5RW5kIC0gMSkgPj0gMCk7CisgICAgICAgIGJ1ZmZl
ci5zZXRMYXN0RGVjb2RlZFJvdyh5RW5kIC0gMSk7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0zOTAsNiArMzk0LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1
ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgICBmb3IgKGludCB5ID0gcHJl
dlJlY3QueSgpOyB5IDwgcHJldlJlY3QubWF4WSgpOyArK3kpIHsKICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IHggPSBwcmV2UmVjdC54KCk7IHggPCBwcmV2UmVjdC5tYXhYKCk7ICsreCkKICAg
ICAgICAgICAgICAgICAgICAgICBidWZmZXItPnNldFJHQkEoeCwgeSwgMCwgMCwgMCwgMCk7Cisg
ICAgICAgICAgICAgICAgICBidWZmZXItPnNldExhc3REZWNvZGVkUm93KHkpOwogICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgIGlmICgocHJldlJlY3Qud2lkdGgoKSA+IDApICYmIChwcmV2
UmVjdC5oZWlnaHQoKSA+IDApKQogICAgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRIYXNBbHBo
YSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDkxZjEyMzZiMzU5
YmMxNTVhZjM3YzdmZTJjZTM2ZWE3M2M1MDk0OTYuLjQ4NjFjYjY2NzIzOTc4Y2JkYjM3NzhlMGIz
NzgxOThlZWI5YjA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTc3
LDYgKzU3Nyw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAg
ICBpZiAodHVyYm9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2UpKSB7CiAgICAgICAgIEFT
U0VSVCghbV9zY2FsZWQpOwogICAgICAgICB3aGlsZSAoaW5mby0+b3V0cHV0X3NjYW5saW5lIDwg
aW5mby0+b3V0cHV0X2hlaWdodCkgeworICAgICAgICAgICAgYnVmZmVyLnNldExhc3REZWNvZGVk
Um93KGluZm8tPm91dHB1dF9zY2FubGluZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBy
b3cgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihidWZmZXIuZ2V0QWRkcigwLCBp
bmZvLT5vdXRwdXRfc2NhbmxpbmUpKTsKICAgICAgICAgICAgIGlmIChqcGVnX3JlYWRfc2Nhbmxp
bmVzKGluZm8sICZyb3csIDEpICE9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjI4LDYgKzYyOSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVz
KCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGRlc3RZKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTM4
ZDVjNTEyOTFlYTI2ZjY5NjQzZjZhYTQ0ODg0YmI1YzY0ODBlZi4uODEwY2FhNzIwODIxOWZmZjZj
ZjYyOTc0ZThlZjdlZjFiMzQ1MWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTUyMCw2ICs1MjAsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2ln
bmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAKICAgICBpZiAobm9uVHJp
dmlhbEFscGhhICYmICFidWZmZXIuaGFzQWxwaGEoKSkKICAgICAgICAgYnVmZmVyLnNldEhhc0Fs
cGhhKG5vblRyaXZpYWxBbHBoYSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHkpOwog
fQogCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VE
ZWNvZGVyU2tpYS5jcHAKaW5kZXggNWNjMTMyYzRkNDg0MDBiODE1MmVlNWY0ZmVmMjI0MmM0Mjlk
YjZiNi4uMTMzMThhMzg0NmZmNWFlYmQ5MzAyYWQzMmUxNTMyM2RkODczOGNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29k
ZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIEltYWdlRnJhbWUmIElt
YWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKIHZvaWQgSW1hZ2VG
cmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogewogICAgIG1fYml0bWFwLmJpdG1hcCgpLnJlc2V0KCk7
CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5Owog
ICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVC
dWZmZXJDYWNoZSgpCiAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwg
YnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC03Niw2ICs3Nyw3IEBAIGJvb2wgSW1hZ2VGcmFt
ZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAKICAgICBtX2JpdG1h
cC5iaXRtYXAoKS5yZXNldCgpOwogICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXJCaXRt
YXAgPSBvdGhlci5tX2JpdG1hcDsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gb3RoZXIubV9sYXN0
RGVjb2RlZFJvdzsKICAgICByZXR1cm4gb3RoZXJCaXRtYXAuYml0bWFwKCkuY29weVRvKCZtX2Jp
dG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCkuY29uZmlnKCkpOwogfQogCkBAIC04
NCw2ICs4Niw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBu
ZXdIZWlnaHQpCiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLCBp
dCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0
KCkpOwogCisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9iaXRtYXAuYml0bWFwKCku
c2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3V2lkdGgsIG5ld0hlaWdo
dCk7CiAgICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVscygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwODJlMzNk
ZGIyYTM2MGUzODg4ZDc5YjAzYTljMjFjY2RiOGMwM2MyLi5hOWY5OGFkODBmNmYxOTgwNThkMmFm
ZGViYjZhNDA5ZTIzYWU3OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAg
LTEzMiwxOSArMTMyLDI2IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfQogCi0gICAgc3dp
dGNoIChXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNpemUpKSB7Ci0gICAg
Y2FzZSBWUDhfU1RBVFVTX09LOgotICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGUpOwotICAgICAgICBXZWJQSURlbGV0ZShtX2RlY29kZXIpOwotICAgICAg
ICBtX2RlY29kZXIgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFZQOF9TVEFU
VVNfU1VTUEVOREVEOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKKyAgICBj
b25zdCBWUDhTdGF0dXNDb2RlIHN0YXR1cyA9IFdlYlBJVXBkYXRlKG1fZGVjb2RlciwgZGF0YUJ5
dGVzLCBkYXRhU2l6ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBWUDhfU1RBVFVTX09LICYmIHN0YXR1
cyAhPSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkgewogICAgICAgICBXZWJQSURlbGV0ZShtX2RlY29k
ZXIpOwogICAgICAgICBtX2RlY29kZXIgPSAwOwogICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7
CiAgICAgfQorICAgIGludCBsYXN0WSA9IDA7CisgICAgaWYgKCFXZWJQSURlY0dldFJHQihtX2Rl
Y29kZXIsICZsYXN0WSwgMCwgMCwgMCkpCisgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKKyAg
ICBBU1NFUlQobGFzdFkgPj0gMCk7CisgICAgQVNTRVJUKGxhc3RZIDw9IHNpemUoKS5oZWlnaHQo
KSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGxhc3RZID8gbGFzdFkgLSAxIDogMCk7
CisKKyAgICBpZiAoc3RhdHVzID09IFZQOF9TVEFUVVNfU1VTUEVOREVEKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lQ29tcGxl
dGUpOworICAgIFdlYlBJRGVsZXRlKG1fZGVjb2Rlcik7CisgICAgbV9kZWNvZGVyID0gMDsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNDhlYTA1NDcwZGRmMDRiZDEwNDJkNWVi
MzBjMTZiZmNlNzhkM2IxNC4uOGU2Yjk0OGVlNmU2OGQzYWZkMDNmNjcwODdmMmExMDMyMjQ4ZWVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zMTEsNyAr
MzExLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIExheW91dFVuaXQg
dXNhYmxlV2lkdGggPSBjV2lkdGggLSAyOwogICAgICAgICAgICAgTGF5b3V0VW5pdCB1c2FibGVI
ZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IHRv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
KS5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgp
ICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yKGZyYW1l
KCkpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAg
ICAgICAgICAgaWYgKGNlbnRlclkgPCAwKQogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0g
MDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciAr
IGxlZnRQYWQgKyBjZW50ZXJYICsgMSwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDEp
OwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGlt
YWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFJlY3Qocm91bmRlZEludFBvaW50KHBh
aW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVTb3VyY2VPdmVy
LCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgICAgICAgICBlcnJv
clBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDIsNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdAogICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJ
bWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpIHx8IGFsaWduZWRSZWN0
LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoYWxp
Z25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkpOworICAgIEltYWdlKiBpbWcg
PSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSk7CiAg
ICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NTAs
NyArNDUwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QKICAgICBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWx0ID8gaW1hZ2VFbHQtPmNvbXBvc2l0ZU9wZXJh
dG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0g
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVj
dC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdl
KGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBjb250
ZXh0LT5kcmF3SW1hZ2UoaW1nLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBj
b21wb3NpdGVPcGVyYXRvciwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgdXNlTG93
UXVhbGl0eVNjYWxpbmcpOwogfQogCiBib29sIFJlbmRlckltYWdlOjpib3hTaGFkb3dTaG91bGRC
ZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRh
bmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIFJlbmRl
ckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CiAKICAgICAvLyBDaGVjayBmb3Ig
Yml0bWFwIGltYWdlIHdpdGggYWxwaGEuCiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZSgpLmdldCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0JpdG1hcElt
YWdlKCkgfHwgaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCisgICAgaWYgKCFpbWFnZSB8
fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8fCB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKGlt
YWdlKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggOTg4NmZiMzE5ODIzNTNkNjQwMjNmNTc0YjAwYzE0
YTIwZmIxZmMyYS4uOWMzNzRlZjRiNGM1NGQzY2MyYjRhNTJhOGE1Yjg0ZTlkOGZiNzdjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKIAogI2luY2x1
ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2lu
Y2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC0xMDc5LDggKzEwODAsMjEgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgIGlmICghY2FjaGVk
SW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRoaXMgaXMgYSBu
by1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVyIGxheWVyIGZvciB0aGUgaW1h
Z2UuCi0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOworICAg
IGlmIChpbWFnZSAhPSBtX2NvbXBvc2l0ZWRJbWFnZSkgeworICAgICAgICAvLyBXZSBoYXZlIHRv
IHdhaXQgdW50aWwgdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQgYmVmb3JlIHNldHRpbmcgaXQg
b24gdGhlIGxheWVyLgorICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAhdG9S
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSktPmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8SW1hZ2U+IGRlY29kZWRCaXRt
YXBJbWFnZSA9IGltYWdlOworICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkgewor
ICAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAgIGRlY29kZWRCaXRtYXBJbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoaW1hZ2VQdHIpOworICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgaXMg
YSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVyIGxheWVyIGZvciB0aGUg
aW1hZ2UuCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGRlY29k
ZWRCaXRtYXBJbWFnZS5nZXQoKSk7CisgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7
CisgICAgfQorCiAgICAgdXBkYXRlRHJhd3NDb250ZW50KCk7CiAgICAgCiAgICAgLy8gSW1hZ2Ug
YW5pbWF0aW9uIGlzICJsYXp5IiwgaW4gdGhhdCBpdCBhdXRvbWF0aWNhbGx5IHN0b3BzIHVubGVz
cyBzb21lb25lIGlzIGRyYXdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaAppbmRleCAwZjQyZDNmYjkxYjE3OTM1OTc5ZmRiMThkYmQwNmZjYTY4ZmJj
ODRjLi4wNzI4MGRjYjk1NDA0YTIxMDA0NWMyY2YwMjQ5ODExMWZlZGM3OTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0yNDEsNiArMjQx
LDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9sYXllckZvclZlcnRp
Y2FsU2Nyb2xsYmFyOwogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX2xheWVyRm9yU2Nyb2xs
Q29ybmVyOwogCisgICAgUmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKKwogICAgIElu
dFJlY3QgbV9jb21wb3NpdGVkQm91bmRzOwogCiAgICAgYm9vbCBtX2FydGlmaWNpYWxseUluZmxh
dGVkQm91bmRzOyAgICAgIC8vIGJvdW5kcyBoYWQgdG8gYmUgbWFkZSBub24temVybyB0byBtYWtl
IHRyYW5zZm9ybS1vcmlnaW4gd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA1NmJlNWNkNDE2YmNkZTI2ZTBhODU1YmUxYWRjZWEy
YjQzZmMwYjk1Li5hMTk2ZTc1ZjhhOWRmMWEyOGRjNmU3YmE5MDU0ZTk2ZjE1NTE1MzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiU1ZH
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5oIgpAQCAtMTI3LDE0ICsxMjgsMTQgQEAgdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAg
ICAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCh0aGlzLCBjaGls
ZFBhaW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVy
aW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBt
X2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0g
dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFn
ZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBtX29iamVj
dEJvdW5kaW5nQm94OwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGlt
YWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgICAgICAgICAgICAgU1ZHSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihu
b2RlKCkpOwogICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cHJlc2VydmVBc3BlY3RSYXRp
bygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgICAgICAgICAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICAgICAgY2hpbGRQYWlu
dEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0
UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcAppbmRleCAzYmFlYTI3YzlmNTU0ODNhZjA1OGFh
ZmI2MTgxMDcyZTI0NGEwNmQwLi5jZGUxMzlmY2VjYWU1ODM4ZjM2MjVmOWM4Nzk5MGEzNzcyMTA5
NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0
YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJ
bWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgpOworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLnJlcXVl
c3RGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBmcmFtZShB
ZG9wdENGLCBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gV2ViSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZVNraWEuY3BwCmluZGV4IGZiMGRmN2NhZmZjYTFmYTBiMzdkNmU2M2E5ZWUxNzA4Mjg4NjA2MDUu
LjVkODY0YTI3YmE5MTA2MDAzNTkyOTFhNTc2YjI0NjQ2YjA1N2UxZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJJ
bWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6
ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbWFnZUZyYW1lRGF0YSBp
bWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOworICAgIElt
YWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLnJlcXVlc3RGcmFtZUF0SW5kZXgo
aW5kZXgpOwogICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gYWRvcHRQdHIoaW1h
Z2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdl
YkltYWdlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153220</attachid>
            <date>2012-07-19 04:06:57 -0700</date>
            <delta_ts>2012-07-19 04:11:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120719200654.patch</filename>
            <type>text/plain</type>
            <size>96112</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRjMWJjN2Q1YmNiOGU2
NmMwMWY5OGViNzc2ZDBkZmI0NDk2MzhhMC4uYjBhOGYwYzU5NTlhZjE4N2ZlZjUyNjU3M2NmYTIw
YmZjZjEzOWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxMi0wNy0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9J
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0lt
YWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpsYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpzZXRMYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAo
V2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNr
Z3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAg
ICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQp
OgorCiAyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlZmFjdG9yaW5nIG1ldGFkYXRhIG9mIEJpdG1hcEltYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyY2E0MGZiZTUyODM0NjllMjNlNTYxMDIwNzBlYWVmYzM3
NDJjNDAwLi42MGEwZmJjNjBhOGRiMTdkNzVkMzJiODQxN2ZmMGIxODE1ZDA3ZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA3LTE3ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBwYXJhbGxl
bCBpbWFnZSBkZWNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdXRob3JlZCBieSBIdWFuZyBEb25nc3VuZyBhbmQgS3dhbmcgWXVsIFNlby4KKwor
ICAgICAgICBNYWtlIGltYWdlIGRlY29kaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQg
dGhlIG1haW4gdGhyZWFkIGNhbiBzcGVuZCBtb3JlCisgICAgICAgIHRpbWUgaW4gbG9hZGluZywg
cGFyc2luZywgc2NyaXB0aW5nIGFuZCBsYXlvdXQgd2hpbGUgaW1hZ2UgZGVjb2RpbmcgdGhyZWFk
cyBkZWNvZGUKKyAgICAgICAgaW1hZ2VzIGluIHRoZSBiYWNrZ3JvdW5kLgorCisgICAgICAgIFJl
ZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L3B1Yj9pZD0xMmdmN01oTkhm
dXBlUjNHZFJGLWgyVnpnODZ2aUNid1hxOF9KQnlIS2xnMAorICAgICAgICBmb3IgZGV0YWlsZWQg
ZXhwbGFuYXRpb24uCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKKzIwMTItMDctMTcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgUHJl
cGFyZSBmb3IgcGFyYWxsZWwgaW1hZ2UgZGVjb2Rlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZmVjZDQzMWQ5ODYzZjgxM2U1OTliYTdjZGI5YzMwOGQzNDI4MjFjOS4uMTNmYmMwMDExMTk2MDFk
ZmNjYTExZTJlNjA2NTA5ODYzYjFmNWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEyMDUs
OSArMTIwNSwxMSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVXb3JrZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRh
dGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZTAzMmEzYmE2M2E2NTQzODdmMDk0Mjk0YjFkNWM0MTU0MjEwNThkOC4uYjU3ZWIy
MmJiYjI5Y2M0ZWNkMjJkZDdmZTQ5ZmQ5ZTRkZGU1Zjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zMjA5LDYgKzMyMDksMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjNDk1OTEwMzk1NjA3ZWUx
MTBjMzJhNjYyMjkzZTdhYmJlZGEzZDQwLi43NzE1OTdhZDFjZTdmZmZiOWQ3NThhYjhjN2Y2YjA1
OWNmZjgxOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk2NSwxMCArOTY1LDEyIEBAIFNPVVJDRVMgKz0g
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBcCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRl
ZEZvbnREYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApA
QCAtMjA4NiwxMSArMjA4OCwxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludEhhc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1M
YXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBcCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGE2NmMzOWJiODU2ZDY5MGQ3ZDA1NWU1ODUzNjEwMDRmMzZm
ODliZGIuLjY4NzE3MTliOThkNGNiY2I3NWJlMjBlOGU1ZGRhZmQ4NzU3MWIzMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM1MDksMTEgKzM1MDksMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyYTc0NGFmNjkzOGViNGY4YzAwNjI5
ZTZjOTA2NTcyNjQ4NDVmMGRjLi5hYzVkMzIwNjhhYmM3ZGY4ZGQ1ZWU3MTA3MmVlMmRlNmE1YzRh
YWFjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtMjk0MDYsNiArMjk0MDYsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQ
YXRoVHJhdmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjk0MzQsNiAr
Mjk0NDYsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGU2MjhlYjNmOGU5
Zjc5OGZlODAzZGFlMmFiNTQ1MTFkMzM1MTZmMC4uY2NiNWY2ZWE1YTkyOTE3MjUzY2YyN2VjNWZj
Yjg0YzU3NWMyZDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQyMCw2ICsxNDIwLDggQEAKIAkJNEIzMDQzQ0QwQUUwMzcz
QjAwQTgyNjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4MDkzMEVFRjUw
RDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFn
ZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OworCQk1
QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzNDgwOTEwRUVG
NTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsgfTsKKwkJNUIz
NDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5MjBFRUY1MEQ0
MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJNEI2RkE2RjQw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4
NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNl
Q0YuY3BwICovOyB9OwpAQCAtODUyNCw2ICs4NTI2LDggQEAKIAkJNEIzMDQzQ0IwQUUwMzczQjAw
QTgyNjQ3IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRp
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFy
dFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjMwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NjgsNiArMTk1NzIsOCBAQAogCQkJCUE4MEEzOEZE
MEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4
MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUz
ODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4MDkxMEVFRjUw
RDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJCQkJNUIzNDgw
OTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggKi8sCiAJCQkJ
QjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICov
LAogCQkJKTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NTI3LDYgKzI0NTMzLDcgQEAKIAkJCQk3RUU2
ODQ2RjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxMCw2ICsyNzcxNyw3IEBACiAJCQkJNTE0Qzc2N0UwQ0U5
MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFC
NDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQz
MTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDMxNjBBNjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0ZDRjNjE5OTEz
ZDFiMzQ2OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2MGM0ODFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtNjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc1Vu
aWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCisgICAg
LCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5LDEyIEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICAvLyBOT1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBoZXJlLCB0aGF0
IHdpbGwgdHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGkuZS4gbmV2ZXIt
ZGVjb2RlZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFzcykgZnJhbWVz
IQotICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0Nv
bXBsZXRlKQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJyZW50IGZyYW1l
LCBiZWNhdXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAgICAgICAvLyBp
biByZXRhaW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRoaXMgZGVjb2Rl
ZCBpbWFnZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIHJlbW92ZWQg
aGVyZSwgdGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0ZSBib3guCisg
ICAgICAgIC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHJl
dGFpbmVkIG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmIChtX2ZyYW1lc1tp
XS5tX2ZyYW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJyZW50RnJhbWUg
IT0gaSkKICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRy
dWUpID8gMSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVz
Q2xlYXJlZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZy
YW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2FjaGluZ0ZyYW1l
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4aXN0IHdoZW4g
bV9pc0NvbXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3IGZyYW1lIGV2
ZW4gaWYgbV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdl
ZCBmb3IgZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4ID49IG1fZnJh
bWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2lzQ29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAgIG1faXNDYWNo
aW5nRnJhbWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAgICAgICAgbV9p
c0NhY2hpbmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNjcsMTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBp
bmRleCkKICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2Zy
YW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4
KGluZGV4KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4LCByZXRhaW5l
ZE1vZGVSZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJlY2VpdmVGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURh
dGEpCitib29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdAogewor
ICAgIHJldHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWluZWRNb2RlSW1h
Z2UtPnJldGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkaWRS
ZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGlt
YWdlRnJhbWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVk
KQoreworICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBpbmRpcmVjdGx5
IGluIHRoaXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVy
KG1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8vIG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVwbGFjZWQgd2l0
aCBuZXcgZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xlYXIgbV9mcmFt
ZSwgdGhlIG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQgZm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0IGJlIHJlbW92
ZWQgaGVyZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpbmRleF0u
Y2xlYXIodHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1l
c0NsZWFyZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZyYW1lRGF0YShp
bWFnZUZyYW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwpA
QCAtMjg4LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAgICAgICAvLyB0
byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRlcyAtPSBtX2Rl
Y29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAw
OwotICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKSB7CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0
aGlzLCBkZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tpbmRleF0ubV9p
c0NvbXBsZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCkKKyAgICAg
ICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywgSW50UmVjdChJ
bnRQb2ludCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMzA5LDcgKzM0
NSwxMyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFtZUR1cmF0aW9u
QXRJbmRleCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsK
KyAgICAvLyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29kZWQgYnkgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBtX2lzQ29tcGxl
dGUgaXMgdHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiBt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZy
YW1lSXNDb21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2NjlhMDUxMjFi
NS4uYzRkNTZmNzVlNTI3NTVmNDA1MDRiODhkZTc3ZWJhNjllNDBiOWY5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRtYXBJbWFnZSA6
IHB1YmxpYyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBj
bGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVk
SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZy
aWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0xOTIsNiArMTk1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgdmlydHVhbCBi
b29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBs
ZXRlKCk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7
CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwpA
QCAtMjAxLDcgKzIwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VP
YnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwg
Y29uc3QgSW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1l
QXRJbmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZh
bHNlLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjkzLDYgKzI5Nyw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7CiAgICAgdmlydHVh
bCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCByZXRhaW5lZE1vZGVS
ZW5kZXJpbmcoKSBjb25zdDsKKwogICAgIEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1h
Z2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CkBAIC0zMTcsNiArMzIzLDgg
QEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1Np
emU7IC8vIFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWlu
ZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNp
emVfdCBtX2ZyYW1lQ291bnQ7CiAKKyAgICBSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+
IG1fcmV0YWluZWRNb2RlSW1hZ2U7CisKICAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8g
V2hldGhlciBvciBub3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgogICAgIGJvb2wgbV9jaGVj
a2VkRm9yU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUg
Zm9yIHNvbGlkIGNvbG9yLgogCkBAIC0zMjcsNiArMzM1LDggQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9zaXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0
aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KICAgICBt
dXRhYmxlIGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxlIGJvb2wg
bV9oYXZlRnJhbWVDb3VudCA6IDE7CisKKyAgICBib29sIG1faXNDYWNoaW5nRnJhbWUgOiAxOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCmluZGV4IDAyMDMzNGVjZmRkNTZjZWRhNDZlN2FhOWUzMjFlZWYxNTkyZDQzOTEuLmUz
MzViYjExZTdlZWM2NjJjYzk3MWE3YWU4ZmFiOWE1ZGFmMGY3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM1LDkgKzM1LDEz
IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhcmFs
bGVsSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc19yZXNvbHV0aW9uVGhy
ZXNob2xkRm9yUGFyYWxsZWwgPSAzMDAgKiAzMDA7CisKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RF
Ul9ET1dOX1NBTVBMSU5HKQogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVj
b2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7CiAjZW5kaWYKQEAgLTY2LDExICs3MCwxNSBAQCBJbWFn
ZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVz
dHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkZXN0cm95QWxsKSB7Ci0gICAgICAgIGlm
IChtX2RlY29kZXIpCisgICAgICAgIC8vIE9ubHkgR0lGIGRlY29kZXIgaW1wbGVtZW50cyBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUuCisgICAgICAgIGlmIChtX2RlY29kZXIgJiYgIW1fcGFyYWxsZWxE
ZWNvZGVyKQogICAgICAgICAgICAgbV9kZWNvZGVyLT5jbGVhckZyYW1lQnVmZmVyQ2FjaGUoY2xl
YXJCZWZvcmVGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9wYXJh
bGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7CisKICAg
ICBkZWxldGUgbV9kZWNvZGVyOwogICAgIG1fZGVjb2RlciA9IDA7CiAgICAgaWYgKGRhdGEpCkBA
IC04OCw2ICs5NiwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBleGFt
aW5lIHRoZSBkYXRhIGFuZCBpbnN0YW50aWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlh
dGUgZGVjb2RlciBwbHVnaW4uCiAgICAgLy8gSWYgaW5zdWZmaWNpZW50IGJ5dGVzIGFyZSBhdmFp
bGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbWFnZSB0eXBlLCBubyBkZWNvZGVyIHBsdWdpbiB3aWxs
IGJlCiAgICAgLy8gbWFkZS4KKworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkgewor
ICAgICAgICBBU1NFUlQobV9kZWNvZGVyKTsKKyAgICAgICAgbV9wYXJhbGxlbERlY29kZXItPnNl
dERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIG1fZGVjb2RlciA9IHN0YXRpY19jYXN0PE5h
dGl2ZUltYWdlU291cmNlUHRyPihJbWFnZURlY29kZXI6OmNyZWF0ZSgqZGF0YSwgbV9hbHBoYU9w
dGlvbiwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xMDIsMTEgKzExNywxNSBAQCB2b2lkIEltYWdlU291
cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAK
IFN0cmluZyBJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogeworICAgIGlm
IChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNv
ZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29k
ZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJpbmcoKTsKIH0KIAogYm9vbCBJbWFnZVNvdXJj
ZTo6aXNTaXplQXZhaWxhYmxlKCkKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkp
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBtX2RlY29kZXIgJiYgbV9kZWNvZGVy
LT5pc1NpemVBdmFpbGFibGUoKTsKIH0KIApAQCAtMTE2LDYgKzEzNSw4IEBAIEludFNpemUgSW1h
Z2VTb3VyY2U6OnNpemUoUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RP
cmllbnRhdGlvbikKICAgICBpZiAoc2hvdWxkUmVzcGVjdE9yaWVudGF0aW9uID09IFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCisgICAgaWYgKG1f
cGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gbV9wYXJhbGxlbERlY29kZXIt
PnNpemUoKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5zaXplKCkgOiBJbnRT
aXplKCk7CiB9CiAKQEAgLTEyNSw2ICsxNDYsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCiAg
ICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rl
ci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAgICAg
cmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCkgOiBJ
bnRTaXplKCk7CiB9CiAKQEAgLTE0MCwyMyArMTYzLDEyMCBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6
OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0CiAKIGludCBJbWFnZVNv
dXJjZTo6cmVwZXRpdGlvbkNvdW50KCkKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpCisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKICAgICByZXR1cm4gbV9kZWNvZGVy
ID8gbV9kZWNvZGVyLT5yZXBldGl0aW9uQ291bnQoKSA6IGNBbmltYXRpb25Ob25lOwogfQogCiBz
aXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogeworICAgIGlmIChtX3BhcmFs
bGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIG1fZGVjb2Rl
ciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6
cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNv
dXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGJvb2wgcmV0YWluZWRNb2Rl
UmVuZGVyaW5nKQoreworICAgIEFTU0VSVCghKHJldGFpbmVkTW9kZVJlbmRlcmluZyAmJiBpbmRl
eCkpOworICAgIEFTU0VSVCghKHJldGFpbmVkTW9kZVJlbmRlcmluZyAmJiAhbV9vYnNlcnZlcikp
OworCisgICAgaWYgKCFtX2RlY29kZXIpIHsKKyAgICAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2
ZUZyYW1lQXRJbmRleChpbmRleCwgSW1hZ2VGcmFtZURhdGEoKSk7CisgICAgICAgIHJldHVybiBJ
bWFnZUZyYW1lRGF0YSgpOworICAgIH0KKworICAgIGlmICghcmV0YWluZWRNb2RlUmVuZGVyaW5n
IHx8ICFtX29ic2VydmVyIHx8IGZpcnN0RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgIHJldHVy
biBzZXJpYWxEZWNvZGUoaW5kZXgpOworCisgICAgaWYgKHNob3VsZERlY29kZVBhcmFsbGVsKCkp
IHsKKyAgICAgICAgcGFyYWxsZWxEZWNvZGUoKTsKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVE
YXRhKCk7CisgICAgfQorCisgICAgcmV0dXJuIHNlcmlhbERlY29kZShpbmRleCk7Cit9CisKK2Jv
b2wgSW1hZ2VTb3VyY2U6OnNob3VsZERlY29kZVBhcmFsbGVsKCkKK3sKKyAgICBBU1NFUlQobV9k
ZWNvZGVyKTsKKworICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBpZiAoV1RGOjpudW1iZXJPZlByb2Nlc3NvckNvcmVzKCkgPT0gMSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGZpbGVFeHQgPSBmaWxlbmFtZUV4
dGVuc2lvbigpOworICAgIGlmIChmaWxlRXh0ID09ICJpY28iIHx8IGZpbGVFeHQgPT0gImdpZiIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNTaXplQXZhaWxhYmxlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChzaXplKCkuYXJlYSgpIDwgc19yZXNvbHV0
aW9uVGhyZXNob2xkRm9yUGFyYWxsZWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEltYWdlU291cmNlOjpmaXJzdEZyYW1lSXNDb21wbGV0ZSgp
Cit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisgICAgSW1hZ2VGcmFtZSogaW1hZ2VGcmFtZSA9
IDA7CisgICAgaWYgKCFtX3BhcmFsbGVsRGVjb2RlcikKKyAgICAgICAgaW1hZ2VGcmFtZSA9IG1f
ZGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIHJldHVybiBpbWFn
ZUZyYW1lICYmIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW1hZ2VGcmFtZSk7Cit9CisKK3ZvaWQg
SW1hZ2VTb3VyY2U6OnBhcmFsbGVsRGVjb2RlKCkKK3sKKyAgICBjcmVhdGVQYXJhbGxlbERlY29k
ZXJJZk5lZWRlZCgpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5kZWNvZGUoKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6ZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1l
RGF0YSkKK3sKKyAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgbV9vYnNlcnZlci0+ZGlkUmVj
ZWl2ZUZyYW1lQXRJbmRleCgwLCBpbWFnZUZyYW1lRGF0YSwgdHJ1ZSk7CisKKyAgICBpZiAoaW1h
Z2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2Rlcigp
OworfQorCit2b2lkIEltYWdlU291cmNlOjpjcmVhdGVQYXJhbGxlbERlY29kZXJJZk5lZWRlZCgp
Cit7CisgICAgaWYgKCFtX3BhcmFsbGVsRGVjb2RlcikKKyAgICAgICAgbV9wYXJhbGxlbERlY29k
ZXIgPSBhZG9wdFJlZihuZXcgUGFyYWxsZWxJbWFnZURlY29kZXIodGhpcywgbV9kZWNvZGVyKSk7
Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKCkKIHsKICAgICBB
U1NFUlQobV9vYnNlcnZlcik7CisgICAgbV9wYXJhbGxlbERlY29kZXItPmludmFsaWRhdGUoKTsK
KyAgICBtX3BhcmFsbGVsRGVjb2Rlci5jbGVhcigpOworfQorCitJbWFnZUZyYW1lRGF0YSBJbWFn
ZVNvdXJjZTo6c2VyaWFsRGVjb2RlKHNpemVfdCBpbmRleCkKK3sKKyAgICBib29sIHBhcmFsbGVs
RGVjb2RlckNhbmNlbGVkID0gZmFsc2U7CisgICAgLy8gUmVuZGVySW1hZ2UgYW5kIENhbnZhc0Vs
ZW1lbnQgY2FuIHNoYXJlIHRoZSBzYW1lIENhY2hlZEltYWdlLgorICAgIGlmIChtX3BhcmFsbGVs
RGVjb2Rlci5nZXQoKSkgeworICAgICAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgICAgIGNs
ZWFyUGFyYWxsZWxEZWNvZGVyKCk7CisgICAgICAgIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0g
dHJ1ZTsKKyAgICB9CisKICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0
ZUZyYW1lQXRJbmRleChpbmRleCk7Ci0gICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJ
bmRleChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworCisgICAgaWYgKG1fb2JzZXJ2ZXIpCisgICAg
ICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVE
YXRhLCBmYWxzZSAvKiByZXRhaW5lZE1vZGUgKi8sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkKTsK
KworICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0KIAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CisgICAgQVNTRVJUKCFt
X3BhcmFsbGVsRGVjb2Rlcik7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiBJ
bWFnZUZyYW1lRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCAyZTY0ZDdkZWE3MzczNGU3ZjcwOGFmNjBkMjlhMzFiODQxMmYx
ODA5Li5jNDI3OWVjOWZjYWRkNDM0MjVkMzMyYmRkODM5YmI1NWNjNTI0YThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI5LDYgKzI5
LDkgQEAKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgorI2lmICFVU0UoQ0cpCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZl
ci5oIgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgpAQCAtNjUsNiArNjgsOSBAQCBjbGFzcyBJbWFnZU9yaWVudGF0aW9uOwog
Y2xhc3MgSW1hZ2VTb3VyY2VPYnNlcnZlcjsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6
ZTsKKyNpZiAhVVNFKENHKQorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXI7CisjZW5kaWYKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogI2lmIFVTRShDRykKQEAgLTE0Myw3ICsxNDksMTEgQEAgY29u
c3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJ
bmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLWNsYXNzIElt
YWdlU291cmNlIHsKK2NsYXNzIEltYWdlU291cmNlCisjaWYgIVVTRShDRykKKyAgICA6IHB1Ymxp
YyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisjZW5kaWYKK3sKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiBwdWJsaWM6CiAgICAgZW51bSBBbHBoYU9wdGlvbiB7
CkBAIC0yMTAsMTcgKzIyMCwyNCBAQCBwdWJsaWM6CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgp
IGNvbnN0OwogCi0gICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxs
aW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKKyAgICAvLyBOT1RFOiBDYWxsZXJzIHNo
b3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGlu
ZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIHZvaWQgcmVx
dWVzdEZyYW1lQXRJbmRleChzaXplX3QpOwotICAgIEltYWdlRnJhbWVEYXRhIGNyZWF0ZUZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIC8vIE5PVEU6IElmIEltYWdlU291cmNlIGhhcyBJbWFnZVNv
dXJjZU9ic2VydmVyLCB0aGlzIG1ldGhvZCBzZW5kcyB0aGUgcmVzdWx0IHZpYSBkaWREZWNvZGUo
KS4KKyAgICAvLyBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHJlc3VsdC4gZS5n
LiBHcmFwaGljc0NvbnRleHQzRAorICAgIEltYWdlRnJhbWVEYXRhIHJlcXVlc3RGcmFtZUF0SW5k
ZXgoc2l6ZV90LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZyA9IGZhbHNlKTsKIAogI2lmIEVO
QUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgc3RhdGljIHVuc2lnbmVkIG1h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZElt
YWdlOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0TWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKHVuc2ln
bmVkIG1heFBpeGVscykgeyBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IG1heFBpeGVsczsg
fQogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIC8vIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2Jz
ZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVEYXRhJik7
CisjZW5kaWYKKwogcHJpdmF0ZToKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5k
ZXgoc2l6ZV90KTsKICNpZiBVU0UoQ0cpCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRo
ZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KQEAgLTIzMyw4ICsy
NTAsMjAgQEAgcHJpdmF0ZToKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChJbWFnZUZyYW1lKikgY29uc3Q7CiAjZW5kaWYKIAorI2lmICFVU0UoQ0cpCisgICAgdm9pZCBj
cmVhdGVQYXJhbGxlbERlY29kZXJJZk5lZWRlZCgpOworICAgIHZvaWQgY2xlYXJQYXJhbGxlbERl
Y29kZXIoKTsKKyAgICBib29sIHNob3VsZERlY29kZVBhcmFsbGVsKCk7CisgICAgYm9vbCBmaXJz
dEZyYW1lSXNDb21wbGV0ZSgpOworICAgIHZvaWQgcGFyYWxsZWxEZWNvZGUoKTsKKyAgICBJbWFn
ZUZyYW1lRGF0YSBzZXJpYWxEZWNvZGUoc2l6ZV90KTsKKworICAgIFJlZlB0cjxQYXJhbGxlbElt
YWdlRGVjb2Rlcj4gbV9wYXJhbGxlbERlY29kZXI7CisjZW5kaWYKKwogICAgIE5hdGl2ZUltYWdl
U291cmNlUHRyIG1fZGVjb2RlcjsKICAgICBJbWFnZVNvdXJjZU9ic2VydmVyKiBtX29ic2VydmVy
OworCiAgICAgQWxwaGFPcHRpb24gbV9hbHBoYU9wdGlvbjsKICAgICBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBtX2dhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOwogI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmgKaW5kZXggNzJhZjcwOGM3ZWNkMTFm
ODE2ZThhOGUwMjcyOTAyNjA2MDgyMTQyOC4uZDMyMDc4MmQ4ZTgzMGMwNGU5OWYwMWUxNDNmZDI5
YTk0YTgzMjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBJbWFnZUZy
YW1lRGF0YTsKIC8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8g
YW4gSW1hZ2VTb3VyY2UsIGluY2x1ZGluZyBkZWNvZGluZy4KIGNsYXNzIEltYWdlU291cmNlT2Jz
ZXJ2ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4
KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYsIGJvb2wg
cmV0YWluZWQgPSBmYWxzZSwgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IGZhbHNlKSA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5JbWFnZVNvdXJjZU9ic2VydmVyKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI5Y2ZhZjU1MzExMzc4NDUwZDMzMTQ2NDJl
ZDFjODgzNjk0N2E1YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcApAQCAtMCwwICsxLDMwNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VE
ZWNvZGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c093bkFycmF5UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgUGFyYWxsZWxGcmFtZURhdGE7Cit2b2lkIGRpZERlY29kZVRh
c2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworc3RhdGljIEltYWdlRnJhbWVEYXRhIGNy
ZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKK1BhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjpQYXJhbGxlbEltYWdlRGVjb2RlcihQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
KiBvYnNlcnZlciwgSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQorICAgIDogbV9vYnNlcnZlcihvYnNl
cnZlcikKKyAgICAsIG1faXNBbGxEYXRhUmVjZWl2ZWQoZmFsc2UpCisgICAgLCBtX2J5dGVzT2ZE
YXRhQ29uc3VtZWQoMCkKKyAgICAsIG1faW1hZ2VEZWNvZGVyKDApCit7CisgICAgaW5pdGlhbGl6
ZShkZWNvZGVyKTsKK30KKworUGFyYWxsZWxJbWFnZURlY29kZXI6On5QYXJhbGxlbEltYWdlRGVj
b2RlcigpCit7CisgICAgQVNTRVJUKCF2YWxpZCgpKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdl
RGVjb2Rlcjo6aW5pdGlhbGl6ZShJbWFnZURlY29kZXIqIGRlY29kZXIpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCkg
JiYgIWRlY29kZXItPnNpemUoKS5pc0VtcHR5KCkpOworCisgICAgbV9zaXplID0gZGVjb2Rlci0+
c2l6ZSgpOworICAgIG1fZmlsZW5hbWVFeHRlbnNpb24gPSBkZWNvZGVyLT5maWxlbmFtZUV4dGVu
c2lvbigpOworCisgICAgc2V0RGF0YShkZWNvZGVyLT5kYXRhKCksIGRlY29kZXItPmlzQWxsRGF0
YVJlY2VpdmVkKCkpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2lt
YWdlRnJhbWUuc2V0U2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAg
IG1faW1hZ2VEZWNvZGVyID0gZGVjb2RlcjsKKyAgICBtX2ltYWdlRGVjb2Rlci0+c2V0RGF0YSgw
LCBmYWxzZSk7CisgICAgLy8gQWZ0ZXIgdGhpcyBsaW5lLCBpdCBpcyBpbGxlZ2FsIGZvciB0aGUg
bWFpbiB0aHJlYWQgdG8gYWNjZXNzIG1faW1hZ2VEZWNvZGVyLgorCisgICAgLy8gVGhpcyBtdXN0
IGJlIHRoZSBsYXN0IGxpbmUgYmVjYXVzZSBJbWFnZURlY29kZVdvcmtlciBndWFyYW50ZWVzCisg
ICAgLy8gdGhlIHZpc2liaWxpdHkgb2YgbWVtYmVycyBpbiB0aGUgdGFzayB0aHJlYWQuCisgICAg
bV9kZWNvZGVXb3JrZXIgPSBJbWFnZURlY29kZVdvcmtlcjo6YWNxdWlyZVNoYXJlZFdvcmtlcigp
OworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjppbnZhbGlkYXRlKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAg
ICBpZiAobV9kZWNvZGVXb3JrZXIuZ2V0KCkpIHsKKyAgICAgICAgbV9kZWNvZGVXb3JrZXItPmlu
dmFsaWRhdGUoKTsKKyAgICAgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICB9CisgICAg
Ly8gVGhlIG1haW4gdGhyZWFkIGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0
aHJlYWRzIGRvIG5vdCBhY2Nlc3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisg
ICAgbV9pbWFnZURlY29kZXItPnNldERhdGEobV9kYXRhLmdldCgpLCBtX2lzQWxsRGF0YVJlY2Vp
dmVkKTsKKworICAgIG1fc2l6ZSA9IEludFNpemUoKTsKKyAgICBtX2ZpbGVuYW1lRXh0ZW5zaW9u
ID0gIiI7CisKKyAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gZmFsc2U7CisgICAgbV9kYXRhLmNs
ZWFyKCk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gMDsKKworICAgIG1faW1hZ2VGcmFt
ZSA9IEltYWdlRnJhbWUoKTsKKworICAgIGlmIChtX2RhdGFGb3JUYXNrLmdldCgpKQorICAgICAg
ICBtX2RhdGFGb3JUYXNrLmNsZWFyKCk7CisKKyAgICBtX2ltYWdlRGVjb2RlciA9IDA7Cit9CisK
K3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CisgICAgbV9kYXRhID0gZGF0
YTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGVjb2RlKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisgICAgQVNT
RVJUKCFtX3NpemUuaXNFbXB0eSgpKTsKKworICAgIE93blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBleHRyYWN0U2VnbWVudEZvclRhc2soKTsKKyAgICBpZiAoIXNlZ21lbnQuZ2V0
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RlY29kZVdvcmtlci0+cG9zdFRhc2soYmluZCgm
UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZVRhc2ssIHRoaXMsIHNlZ21lbnQucmVsZWFzZSgp
KSk7Cit9CisKK1Bhc3NPd25QdHI8UGFyYWxsZWxJbWFnZURlY29kZXI6OkVuY29kZWREYXRhU2Vn
bWVudD4gUGFyYWxsZWxJbWFnZURlY29kZXI6OmV4dHJhY3RTZWdtZW50Rm9yVGFzaygpCit7Cisg
ICAgQVNTRVJUKG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA+PSAwICYmIG1fYnl0ZXNPZkRhdGFDb25z
dW1lZCA8PSBtX2RhdGEtPnNpemUoKSk7CisKKyAgICBpbnQgc2l6ZU9mU2VnbWVudCA9IG1fZGF0
YS0+c2l6ZSgpIC0gbV9ieXRlc09mRGF0YUNvbnN1bWVkOworICAgIGlmICghc2l6ZU9mU2VnbWVu
dCkKKyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PigpOworCisg
ICAgT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gc2VnbWVudChhZG9wdFB0cihuZXcgRW5jb2Rl
ZERhdGFTZWdtZW50KCkpKTsKKyAgICBjb25zdCBjaGFyKiBzcmNQdHIgPSBtX2RhdGEtPmRhdGEo
KSArIG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBzZWdtZW50LT5tX3NlZ21lbnQuYXBwZW5k
KHNyY1B0ciwgc2l6ZU9mU2VnbWVudCk7CisgICAgbV9ieXRlc09mRGF0YUNvbnN1bWVkID0gbV9k
YXRhLT5zaXplKCk7CisKKyAgICBzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkID0gbV9pc0Fs
bERhdGFSZWNlaXZlZDsKKworICAgIHJldHVybiBzZWdtZW50LnJlbGVhc2UoKTsKK30KKworc3Ry
dWN0IFBhcmFsbGVsRnJhbWVEYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXJhbGxl
bEZyYW1lRGF0YSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgUGFyYWxsZWxGcmFtZURhdGEoUGFzc1JlZlB0cjxQYXJhbGxlbEltYWdlRGVjb2Rl
cj4gcGFyYWxsZWxEZWNvZGVyKQorICAgICAgICA6IG1fcGFyYWxsZWxEZWNvZGVyKHBhcmFsbGVs
RGVjb2RlcikKKyAgICAgICAgLCBtX2RlY29kZWRTZWdtZW50KCkKKyAgICAgICAgLCBtX3N0YXR1
cyhJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQorICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCisg
ICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHRydWUpCisgICAgeworICAgIH0KKworICAgIH5Q
YXJhbGxlbEZyYW1lRGF0YSgpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxQYXJhbGxlbElt
YWdlRGVjb2Rlcj4gbV9wYXJhbGxlbERlY29kZXI7CisgICAgT3duQXJyYXlQdHI8SW1hZ2VGcmFt
ZTo6UGl4ZWxEYXRhPiBtX2RlY29kZWRTZWdtZW50OworICAgIEltYWdlRnJhbWU6OkZyYW1lU3Rh
dHVzIG1fc3RhdHVzOworICAgIGJvb2wgbV9oYXNBbHBoYTsKKyAgICBib29sIG1fcHJlbXVsdGlw
bHlBbHBoYTsKKyAgICBJbnRSZWN0IG1fZGVjb2RlZFJlY3Q7Cit9OworCit2b2lkIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyOjpkZWNvZGVUYXNrKFBhc3NPd25QdHI8UGFyYWxsZWxJbWFnZURlY29kZXI6
OkVuY29kZWREYXRhU2VnbWVudD4gcGFzc1NlZ21lbnQpCit7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVyKTsKKworICAgIE93blB0cjxFbmNv
ZGVkRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBwYXNzU2VnbWVudDsKKworICAgIC8vIDEuIFNlbmQg
c2VnbWVudCBkYXRhIHRvIEltYWdlRGVjb2Rlci4KKyAgICBpZiAoIW1fZGF0YUZvclRhc2spIHsK
KyAgICAgICAgbV9kYXRhRm9yVGFzayA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisjaWZuZGVm
IE5ERUJVRworICAgICAgICAvLyBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyIGRvZXMgbm90IGFs
bG93IHR3byB0aHJlYWRzIHRvIGFjY2VzcyBvbmUgUmVmQ291bnRlZCBvYmplY3QuCisgICAgICAg
IC8vIG1fZGF0YUZvclRhc2sgaXMgdXNlZCBieSBib3RoIHRoZSBtYWluIHRocmVhZCBhbmQgdGhl
IHRhc2sgdGhyZWFkOgorICAgICAgICAvLyBUaGUgdGFzayB0aHJlYWQgY3JlYXRlcywgdXNlcyBh
bmQgcmVtb3ZlcyBtX2RhdGFGb3JUYXNrLiBUaGUgbWFpbiB0aHJlYWQgbWF5IHJlbW92ZQorICAg
ICAgICAvLyBtX2RhdGFGb3JUYXNrIGlmIHRoZSB0YXNrIHRocmVhZCBjb3VsZCBub3QgcmVtb3Zl
IG1fZGF0YUZvclRhc2suCisgICAgICAgIC8vCisgICAgICAgIC8vIFBhcmFsbGVsIGltYWdlIGRl
Y29kZXJzIG1hbmFnZSBtX2RhdGFGb3JUYXNrIGluIGEgdGhyZWFkLXNhZmUgd2F5LiBIb3dldmVy
LAorICAgICAgICAvLyB3ZSBjYW4ndCB0ZWxsIHRoZSB2ZXJpZmllciB0aGF0IHdlIGFyZSBzYWZl
IGJ5IHNpbXBseSBwYXNzaW5nIGEgbXV0ZXgKKyAgICAgICAgLy8gYmVjYXVzZSBsaWJkaXNwYXRj
aCBkb2VzIG5vdCBldmVuIGd1YXJhbnRlZSBkZWNvZGVUYXNrIGlzIGNhbGxlZCBieSB0aGUgc2Ft
ZSB0aHJlYWQKKyAgICAgICAgLy8gZWFjaCB0aW1lLiBTbyB0dXJuIG9mZiB0aGUgdmVyaWZpZXIg
aGVyZS4KKyAgICAgICAgbV9kYXRhRm9yVGFzay0+dHVybk9mZlZlcmlmaWVyKCk7CisjZW5kaWYK
KyAgICB9CisgICAgbV9kYXRhRm9yVGFzay0+YXBwZW5kKHNlZ21lbnQtPm1fc2VnbWVudCk7Cisg
ICAgbV9pbWFnZURlY29kZXItPnNldERhdGEobV9kYXRhRm9yVGFzay5nZXQoKSwgc2VnbWVudC0+
bV9pc0FsbERhdGFSZWNlaXZlZCk7CisKKyAgICBJbWFnZUZyYW1lKiBvbGRCdWZmZXIgPSBtX2lt
YWdlRGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERlY29kZSgpOworICAgIGludCBsYXN0
RGVjb2RlZFJvdyA9IG9sZEJ1ZmZlciA/IG9sZEJ1ZmZlci0+bGFzdERlY29kZWRSb3coKSA6IDA7
CisKKyAgICAvLyAyLiBEZWNvZGUgYW4gaW1hZ2UgaW5jcmVtZW50YWxseS4KKyAgICBJbWFnZUZy
YW1lKiBidWZmZXIgPSBtX2ltYWdlRGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOworICAg
IGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0
eSkgeworICAgICAgICBBU1NFUlQoIXNlZ21lbnQtPm1faXNBbGxEYXRhUmVjZWl2ZWQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMy4gTWFrZSBhIFBhcmFsbGVsRnJhbWVEYXRh
IGluIG9yZGVyIHRvIHBhc3MgaXQgdG8gdGhlIG1haW4gdGhyZWFkLgorICAgIFBhcmFsbGVsRnJh
bWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSA9IG5ldyBQYXJhbGxlbEZyYW1lRGF0YSh0aGlzKTsK
KyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgPSBidWZmZXItPnN0YXR1cygpOworICAg
IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhhID0gYnVmZmVyLT5oYXNBbHBoYSgpOworICAg
IHBhcmFsbGVsRnJhbWVEYXRhLT5tX3ByZW11bHRpcGx5QWxwaGEgPSBidWZmZXItPnByZW11bHRp
cGx5QWxwaGEoKTsKKworICAgIGludCBuZXdMYXN0RGVjb2RlZFJvdyA9IGJ1ZmZlci0+bGFzdERl
Y29kZWRSb3coKTsKKyAgICAvLyBPbmx5IGluIEJNUCwgbGFzdERlY29kZWRSb3cgY2FuIGJlIGJp
Z2dlciB0aGFuIG5ld0xhc3REZWNvZGVkUm93LgorICAgIGludCBsYXN0RGVjb2RlZE1pblJvdyA9
IHN0ZDo6bWluKGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAgaW50IGxh
c3REZWNvZGVkTWF4Um93ID0gc3RkOjptYXgobGFzdERlY29kZWRSb3csIG5ld0xhc3REZWNvZGVk
Um93KTsKKyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdCA9IEludFJlY3QoMCwg
bGFzdERlY29kZWRNaW5Sb3csIG1faW1hZ2VEZWNvZGVyLT5zaXplKCkud2lkdGgoKSwgbGFzdERl
Y29kZWRNYXhSb3cgLSBsYXN0RGVjb2RlZE1pblJvdyArIDEpOworCisgICAgLy8gNC4gQ3JlYXRl
IGRlY29kZWQgc2VnbWVudCBkYXRhIGluIG9yZGVyIHRvIHBhc3MgaXQgdG8gdGhlIG1haW4gdGhy
ZWFkLgorICAgIC8vICAgIElmIHRoZSBzdGF0dXMgaXMgRnJhbWVDb21wbGV0ZSwgdGhpcyBpcyBu
b3QgbmVlZGVkIGJlY2F1c2UgYSBOYXRpdmVJbWFnZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhl
IGRlY29kZXIgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIGlmIChwYXJhbGxlbEZyYW1lRGF0YS0+
bV9zdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKSB7CisgICAgICAgIGludCBzZWdt
ZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0LnNpemUoKS5hcmVhKCk7
CisgICAgICAgIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50ID0gYWRvcHRBcnJh
eVB0cihuZXcgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhW3NlZ21lbnRTaXplXSk7CisKKyAgICAgICAg
SW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5t
X2RlY29kZWRTZWdtZW50LmdldCgpOworICAgICAgICBtZW1jcHkoc2VnbWVudEFkZHIsIGJ1ZmZl
ci0+Z2V0QWRkcigwLCBsYXN0RGVjb2RlZE1pblJvdyksIHNlZ21lbnRTaXplICogc2l6ZW9mKElt
YWdlRnJhbWU6OlBpeGVsRGF0YSkpOworICAgIH0gZWxzZSB7IC8vIEZyYW1lQ29tcGxldGUKKyAg
ICAgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOworICAgICAgICBtX2RhdGFG
b3JUYXNrLmNsZWFyKCk7CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKGRpZERl
Y29kZVRhc2tDYWxsYmFjaywgcGFyYWxsZWxGcmFtZURhdGEpKTsKK30KKwordm9pZCBkaWREZWNv
ZGVUYXNrQ2FsbGJhY2soUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgLy8gSWYgYSBjbGllbnQgY2FsbGVkIFBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpjbGVhcigpLCBQYXJhbGxlbEltYWdlRGVjb2RlciBpcyBpbnZh
bGlkYXRlZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT52
YWxpZCgpKQorICAgICAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9wYXJhbGxlbERlY29kZXItPmRp
ZERlY29kZVRhc2socGFyYWxsZWxGcmFtZURhdGEpOworICAgIGRlbGV0ZSBwYXJhbGxlbEZyYW1l
RGF0YTsKK30KKworSW1hZ2VGcmFtZURhdGEgY3JlYXRlSW1hZ2VGcmFtZURhdGEoUGFyYWxsZWxG
cmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEltYWdlRnJhbWVEYXRhIGltYWdl
RnJhbWVEYXRhOworICAgIGltYWdlRnJhbWVEYXRhLm1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbjsKKyAgICBpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgPSBwYXJhbGxl
bEZyYW1lRGF0YS0+bV9zdGF0dXMgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICBp
bWFnZUZyYW1lRGF0YS5tX2hhc0FscGhhID0gIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSB8
fCBwYXJhbGxlbEZyYW1lRGF0YS0+bV9oYXNBbHBoYTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZURh
dGE7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29kZVRhc2soUGFyYWxs
ZWxGcmFtZURhdGEqIHBhcmFsbGVsRnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyAhPSBJbWFnZUZy
YW1lOjpGcmFtZUVtcHR5KTsKKworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0g
Y3JlYXRlSW1hZ2VGcmFtZURhdGEocGFyYWxsZWxGcmFtZURhdGEpOworCisgICAgaWYgKCFpbWFn
ZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUpCisgICAgICAgIGRpZERlY29kZVBhcnRpYWwoaW1hZ2VG
cmFtZURhdGEsIHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBlbHNlCisgICAgICAgIGRpZERlY29k
ZUNvbXBsZXRlKGltYWdlRnJhbWVEYXRhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6ZGlkRGVjb2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEsIFBhcmFs
bGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUocGFyYWxsZWxGcmFt
ZURhdGEpOworICAgIHN5bmNJbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGlt
YWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBtX2ltYWdlRnJhbWUuYXNOZXdOYXRpdmVJbWFnZSgpOwor
ICAgIG1fb2JzZXJ2ZXItPmRpZERlY29kZShpbWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFy
YWxsZWxJbWFnZURlY29kZXI6OmFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKFBhcmFsbGVs
RnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBjb25zdCBJbWFnZUZyYW1lOjpQ
aXhlbERhdGEqIGNvbnN0IHNlZ21lbnRBZGRyID0gcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2Rl
ZFNlZ21lbnQuZ2V0KCk7CisgICAgaW50IHNlZ21lbnRTaXplID0gcGFyYWxsZWxGcmFtZURhdGEt
Pm1fZGVjb2RlZFJlY3Quc2l6ZSgpLmFyZWEoKTsKKyAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEq
IGRlc3RBZGRyID0gbV9pbWFnZUZyYW1lLmdldEFkZHIoMCwgcGFyYWxsZWxGcmFtZURhdGEtPm1f
ZGVjb2RlZFJlY3QueSgpKTsKKyAgICBtZW1jcHkoZGVzdEFkZHIsIHNlZ21lbnRBZGRyLCBzZWdt
ZW50U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpKTsKK30KKwordm9pZCBQYXJh
bGxlbEltYWdlRGVjb2Rlcjo6c3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqIHBhcmFs
bGVsRnJhbWVEYXRhKQoreworICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZXMgYXJlIG5lZWRlZCB0
byBjcmVhdGUgYSB2YWxpZCBuYXRpdmUgaW1hZ2UgaW4gSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpLgorICAgIG1faW1hZ2VGcmFtZS5zZXRTdGF0dXMocGFyYWxsZWxGcmFtZURhdGEtPm1f
c3RhdHVzKTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0SGFzQWxwaGEocGFyYWxsZWxGcmFtZURhdGEt
Pm1faGFzQWxwaGEpOworICAgIG1faW1hZ2VGcmFtZS5zZXRQcmVtdWx0aXBseUFscGhhKHBhcmFs
bGVsRnJhbWVEYXRhLT5tX3ByZW11bHRpcGx5QWxwaGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkaWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURh
dGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fZGVjb2RlV29ya2Vy
LT5pbnZhbGlkYXRlKCk7CisgICAgbV9kZWNvZGVXb3JrZXIuY2xlYXIoKTsKKyAgICAvLyBUaGUg
bWFpbiB0aHJlYWQgY2FuIHVzZSBtX2ltYWdlRGVjb2RlciBiZWNhdXNlIG90aGVyIHRocmVhZHMg
ZG8gbm90IGFjY2VzcyBtX2ltYWdlRGVjb2RlciBhZnRlciB0aGlzIGxpbmUuCisKKyAgICBJbWFn
ZUZyYW1lKiBidWZmZXIgPSBtX2ltYWdlRGVjb2Rlci0+Zmlyc3RJbWFnZUZyYW1lV2l0aG91dERl
Y29kZSgpOworICAgIEFTU0VSVChidWZmZXIpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFt
ZSA9IGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworICAgIG1fb2JzZXJ2ZXItPmRpZERlY29k
ZShpbWFnZUZyYW1lRGF0YSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZjBh
MzhhYjc4MzBiZTQ3ZmJmMDE5Zjc3MDJmZDAzMmQ1NzhmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oCkBA
IC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyX2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVXb3JrZXIuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJQYXJh
bGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworY2xhc3Mg
UGFyYWxsZWxGcmFtZURhdGE7CisKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFBhcmFsbGVsSW1hZ2VEZWNvZGVyPiB7CitwdWJsaWM6Cisg
ICAgUGFyYWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciosIElt
YWdlRGVjb2RlciopOworICAgIH5QYXJhbGxlbEltYWdlRGVjb2RlcigpOworCisgICAgdm9pZCBp
bnZhbGlkYXRlKCk7CisKKyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOworCisgICAgdm9pZCBkZWNvZGUoKTsKKworICAgIGlubGluZSBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVuYW1lRXh0ZW5zaW9uOyB9
CisgICAgaW5saW5lIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCitw
cml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZShJbWFnZURlY29kZXIqKTsKKworICAgIGlubGlu
ZSBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZURlY29kZXI7IH0KKworICAgIHN0
cnVjdCBFbmNvZGVkRGF0YVNlZ21lbnQgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShF
bmNvZGVkRGF0YVNlZ21lbnQpOworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEVuY29kZWREYXRhU2VnbWVudCgpIHsgfQorICAgICAgICBWZWN0
b3I8Y2hhcj4gbV9zZWdtZW50OworICAgICAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Cisg
ICAgfTsKKworICAgIFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBleHRyYWN0U2VnbWVu
dEZvclRhc2soKTsKKworICAgIC8vIE9ubHkgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSB0
YXNrIHRocmVhZC4KKyAgICB2b2lkIGRlY29kZVRhc2soUGFzc093blB0cjxFbmNvZGVkRGF0YVNl
Z21lbnQ+KTsKKworICAgIHZvaWQgZGlkRGVjb2RlVGFzayhQYXJhbGxlbEZyYW1lRGF0YSopOwor
ICAgIHZvaWQgZGlkRGVjb2RlUGFydGlhbChJbWFnZUZyYW1lRGF0YSYsIFBhcmFsbGVsRnJhbWVE
YXRhKik7CisgICAgdm9pZCBhcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZy
YW1lRGF0YSopOworICAgIHZvaWQgc3luY0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsK
KyAgICB2b2lkIGRpZERlY29kZUNvbXBsZXRlKEltYWdlRnJhbWVEYXRhJik7CisgICAgZnJpZW5k
IHZvaWQgZGlkRGVjb2RlVGFza0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVEYXRhKik7CisKKyAgICBQ
YXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyKiBtX29ic2VydmVyOworCisgICAgSW50U2l6ZSBt
X3NpemU7CisgICAgU3RyaW5nIG1fZmlsZW5hbWVFeHRlbnNpb247CisKKyAgICAvLyBGb3IgaW5w
dXQgZGF0YQorICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZDsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2RhdGE7CisgICAgaW50IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKworICAgIC8v
IEZvciBvdXRwdXQgZGF0YQorICAgIEltYWdlRnJhbWUgbV9pbWFnZUZyYW1lOworCisgICAgLy8g
VGhlIHRhc2sgdGhyZWFkIGNhbiBhY2Nlc3Mgb25seSBtX2RhdGFGb3JUYXNrIGFuZCBtX2ltYWdl
RGVjb2Rlci4KKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFGb3JUYXNrOworCisgICAg
SW1hZ2VEZWNvZGVyKiBtX2ltYWdlRGVjb2RlcjsKKworICAgIFJlZlB0cjxJbWFnZURlY29kZVdv
cmtlcj4gbV9kZWNvZGVXb3JrZXI7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJh
bGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3ZTE5NzA1
ZTFlMjljNWYzOWFkYmRjYmU5Nzc3OGExODFkOGU2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIu
aApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAw
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdl
RGVjb2Rlck9ic2VydmVyX2gKKyNkZWZpbmUgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcl9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CisKKy8vIElu
dGVyZmFjZSBmb3Igbm90aWZpY2F0aW9uIGFib3V0IGRlY29kaW5nIGNvbXBsZXRpb24gb2YgYW4g
UGFyYWxsZWxJbWFnZURlY29kZXIuCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGVjb2RlKGNvbnN0IEltYWdlRnJhbWVE
YXRhJikgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGFyYWxsZWxJbWFnZURlY29k
ZXJPYnNlcnZlcigpIHsgfQorfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wOWJhYjY2NTU3ZTFmNzE0Mjg3MTBkMzVlODU4ZjU5M2JlOGRkZGJiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgi
CisKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpjcmVhdGUoQml0bWFwSW1hZ2UqIGJpdG1hcEltYWdlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpKTsKK30KKworUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKEJpdG1hcEltYWdlKiBi
aXRtYXBJbWFnZSkKKyAgICA6IG1fYml0bWFwSW1hZ2UoYml0bWFwSW1hZ2UpCisgICAgLCBtX3Jl
dGFpbmVkTW9kZUNvdW50KDApCit7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6
Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+aGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsKK30KKworSW50U2l6ZSBSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2Rl
U2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNpemUoKTsKK30KKworYm9v
bCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdChJbnRQb2ludCYgcG9pbnQpIGNv
bnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7Cisg
ICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmdldEhvdFNwb3QocG9pbnQpOworfQorCitib29sIFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkK
K3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBy
ZXR1cm4gbV9iaXRtYXBJbWFnZS0+ZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKK30KKwor
U3RyaW5nIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
cmV0dXJuIG1fYml0bWFwSW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCk7Cit9CisKK3ZvaWQgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwp
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
bV9iaXRtYXBJbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOworfQorCit1bnNp
Z25lZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGVjb2RlZFNpemUoKSBjb25zdAoreworICAg
IFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBt
X2JpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpzdGFydEFuaW1hdGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSkKK3sKKyAgICBS
ZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcElt
YWdlLT5zdGFydEFuaW1hdGlvbihjYXRjaFVwSWZOZWNlc3NhcnkpOworfQorCit2b2lkIFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVT
YXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5zdG9wQW5p
bWF0aW9uKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0
aW9uKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsK
KyAgICBtX2JpdG1hcEltYWdlLT5yZXNldEFuaW1hdGlvbigpOworfQorCitOYXRpdmVJbWFnZVB0
ciBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQor
eworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJl
dHVybiBtX2JpdG1hcEltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworfQorCiti
b29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSgpCit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJu
IG1fYml0bWFwSW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisKK2Jvb2wgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKQoreworICAgIFJldGFp
bmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1h
cEltYWdlLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCk7Cit9CisKK3ZvaWQgUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVy
IHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1hZ2UtPmRyYXcoY29udGV4
dCwgZHN0UmVjdCwgc3JjUmVjdCwgc3R5bGVDb2xvclNwYWNlLCBvcCk7Cit9CisKK2Jvb2wgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPm1heUZpbGxXaXRoU29saWRDb2xvcigpOworfQorCitDb2xvciBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2
ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPnNv
bGlkQ29sb3IoKTsKK30KKworUmV0YWluZWRNb2RlU2F2ZXI6OlJldGFpbmVkTW9kZVNhdmVyKGNv
bnN0IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKiBpbWFnZSwgYm9vbCByZXRhaW5lZCkKKyAgICA6
IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX3JldGFpbmVkKHJldGFpbmVkKQoreworICAgIGlmICht
X3JldGFpbmVkKQorICAgICAgICBtX2ltYWdlLT5iZWdpblJldGFpbmVkTW9kZSgpOworfQorCitS
ZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNhdmVyKCkKK3sKKyAgICBpZiAobV9yZXRh
aW5lZCkKKyAgICAgICAgbV9pbWFnZS0+ZW5kUmV0YWluZWRNb2RlKCk7Cit9CisKK1JldGFpbmVk
TW9kZUJpdG1hcEltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKEltYWdlKiBpbWFnZSkK
K3sKKyAgICBBU1NFUlQoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSk7CisKKyAgICBCaXRtYXBJbWFn
ZSogYml0bWFwSW1hZ2UgPSBzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKTsKKyAgICBp
ZiAoIWJpdG1hcEltYWdlLT5tX3JldGFpbmVkTW9kZUltYWdlLmdldCgpKQorICAgICAgICBiaXRt
YXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZSA9IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpj
cmVhdGUoYml0bWFwSW1hZ2UpOworCisgICAgcmV0dXJuIGJpdG1hcEltYWdlLT5tX3JldGFpbmVk
TW9kZUltYWdlLmdldCgpOworfQorCitJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlm
UG9zc2libGUoSW1hZ2UqIGltYWdlKQoreworICAgIGlmIChpbWFnZSAmJiBpbWFnZS0+aXNCaXRt
YXBJbWFnZSgpKQorICAgICAgICByZXR1cm4gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFn
ZSk7CisgICAgcmV0dXJuIGltYWdlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zM2U3YThjMzg1NTczMGNlOWM5OWFlMTlmMTM4MDlkYWZjZjg1N2U1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorI2RlZmluZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZV9o
CisKKyNpbmNsdWRlICJJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEJp
dG1hcEltYWdlOworY2xhc3MgUmV0YWluZWRNb2RlU2F2ZXI7CisKK2NsYXNzIFJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlIDogcHVibGljIEltYWdlIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0YWluZWRN
b2RlU2F2ZXI7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmV0YWluZWRNb2RlQml0
bWFwSW1hZ2U+IGNyZWF0ZShCaXRtYXBJbWFnZSopOworCisgICAgdmlydHVhbCB+UmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0
eU9yaWdpbigpIGNvbnN0OworCisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OworCisgICAgdmlydHVh
bCBib29sIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGRlY29kZWRTaXplKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRp
b24oYm9vbCBjYXRjaFVwSWZOZWNlc3NhcnkgPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cEFuaW1hdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGlvbigpOworCisgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
IHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBoYSgpOworCisgICAgYm9vbCBjdXJyZW50
RnJhbWVJc0NvbXBsZXRlKCk7CisKKyAgICBpbmxpbmUgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJp
bmcoKSBjb25zdCB7IHJldHVybiBtX3JldGFpbmVkTW9kZUNvdW50OyB9CisKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKworICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0
aFNvbGlkQ29sb3IoKTsKKyAgICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFn
ZSopOworCisgICAgaW5saW5lIHZvaWQgYmVnaW5SZXRhaW5lZE1vZGUoKSBjb25zdCB7IG1fcmV0
YWluZWRNb2RlQ291bnQrKzsgfQorICAgIGlubGluZSB2b2lkIGVuZFJldGFpbmVkTW9kZSgpIGNv
bnN0CisgICAgeworICAgICAgICBtX3JldGFpbmVkTW9kZUNvdW50LS07CisgICAgICAgIEFTU0VS
VChtX3JldGFpbmVkTW9kZUNvdW50ID49IDApOworICAgIH0KKworICAgIEJpdG1hcEltYWdlKiBt
X2JpdG1hcEltYWdlOworICAgIG11dGFibGUgaW50IG1fcmV0YWluZWRNb2RlQ291bnQ7Cit9Owor
CitjbGFzcyBSZXRhaW5lZE1vZGVTYXZlciB7CitwdWJsaWM6CisgICAgUmV0YWluZWRNb2RlU2F2
ZXIoY29uc3QgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UqLCBib29sIHJldGFpbmVkID0gdHJ1ZSk7
CisgICAgflJldGFpbmVkTW9kZVNhdmVyKCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UqIG1faW1hZ2U7CisgICAgYm9vbCBtX3JldGFpbmVkOworfTsKKwor
CitSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFn
ZSopOworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKEltYWdlKik7
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlM2E1NjVkMTg2NTQyMTcxZjQwYTI2
MzUyYWFlODA2OThiODA5NGEwLi42Zjk1NzQwNzg4ZmMzZTY3NjNjZjIxZmJiNGY2ZjZkN2Y0MDAz
OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTc2NiwxMyArNzY2LDExIEBAIHZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFn
ZSkgewogICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3SW1hZ2UpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIEFTU0VSVChuZXdJbWFnZSk7CiAKICAgICAgICAgLy8gQ2hlY2sgdG8gc2Vl
IGlmIHRoZSBpbWFnZSBjaGFuZ2VkOyB3ZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSB0aGUgY2Fs
bCB0bwogICAgICAgICAvLyBDR0ltYWdlQ3JlYXRlQ29weVdpdGhDb2xvclNwYWNlKCkgYmVsb3cg
Y2FuIGNyZWF0ZSBhIG5ldyBpbWFnZSBldmVyeSB0aW1lLgotICAgICAgICBpZiAobV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0g
bmV3SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIEFTU0VSVCghbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgfHwgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgIT0g
bmV3SW1hZ2UpOwogICAgICAgICAKICAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2Ug
PSBuZXdJbWFnZTsKICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBkYzZhNGQ0YmNiNzJjNmFlNzM0ZmU3MzlhOGM0Y2U3
ZDU2NDE1ZjQ3Li5kMDZiMWY3N2JmZGE1OTM0YmVkNzZjZTE5Mjk3MGEyYzRjMjgxMjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNTgsNiArNTgsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUp
CiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZh
bHNlKQogewogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5zdXJm
YWNlKCk7CiAgICAgaW50IHdpZHRoID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IDI1NDJjZjhmYTkx
ZDBiOGE3MTQzODVhNGUzMDIzOTY3ODNkOTYxZGQuLmI3NDI1YTllODE2ZmIzYmVlZGIzMmUwMDdk
N2QyYjhkMzE1MTJkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0x
NjUsNyArMTY1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdl
KiBpbWFnZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAgZGVjb2Rlci5z
ZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVD
b3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZyYW1lRGF0
YSBpbWFnZUltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7Cisg
ICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLnJlcXVl
c3RGcmFtZUF0SW5kZXgoMCk7CiAgICAgICAgIGlmICghaW1hZ2VJbWFnZUZyYW1lRGF0YS5tX2lz
Q29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIE93blB0cjxOYXRp
dmVJbWFnZUNhaXJvPiBuYXRpdmVJbWFnZSA9IGFkb3B0UHRyKGltYWdlSW1hZ2VGcmFtZURhdGEu
bV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDc4MGJhNDRkODQxYTYwMDk5Mzk4
OGRhMjMxNDYzMDgyOWQ0MzM5M2QuLjM4N2YxZWY1MmVkZTkxMzhhNDBhZGRkYzlmNmQ1Nzg3NTZj
ODUyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgZGVj
b2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZy
YW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOwor
ICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVxdWVzdEZy
YW1lQXRJbmRleCgwKTsKICAgICAgICAgZGVjb2RlZEltYWdlLmFkb3B0Q0YoaW1hZ2VGcmFtZURh
dGEubV9mcmFtZSk7CiAgICAgICAgIGNnSW1hZ2UgPSBkZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cu
Y3BwCmluZGV4IDczY2VlMjIwNWQ1ZjJkOTcxYjlkYWFhYjYzNDM1ZWNmNTE5MDBhZjAuLjQwNjNk
ZjA1NDhhMTdhMDYxMDBjNjA3ZmQyYzc4Mjk0ZDgxYmVkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCkBAIC04MSw2ICs4MSw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZhaWxhYmxl
KHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgLCBtX2lzQ2FjaGluZ0Zy
YW1lKGZhbHNlKQogewogICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFn
ZSk7CiAgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcAppbmRleCBiNDQ1NDk5M2I1Mjg3YzU0ZmY3NGIyOWIwZGUwMzA2Mjc2YWZiNDI0Li5mYTli
YzNlZDIwMzAyNWNhODAwYzliM2FhNzBiZDU1YjNmZjI2YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFn
ZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTMwOSwxMSArMzEwLDEyIEBAIHNpemVf
dCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/
IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDogMDsKIH0KIAotdm9pZCBJbWFnZVNv
dXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitJbWFnZUZyYW1lRGF0YSBJ
bWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOwogICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRh
ID0gY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBtX29ic2VydmVyLT5kaWRSZWNlaXZl
RnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSk7CisgICAgcmV0dXJuIGltYWdlRnJh
bWVEYXRhOwogfQogCiBJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCmluZGV4IGNkODc5NGU1MzljZmQ1MGVlODhh
NzdlMDdjNDVmODJhYjljZDczNTMuLjkwMDBmYzNkZmI1YjMwOWNkYWZhYTk5NzEyNWI3Yjk2MzVl
ZjNmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnZnL0ltYWdlT3BlblZHLmNwcApAQCAtNjcsNiArNjcsNyBAQCBCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoVGlsZWRJbWFnZU9wZW5WRyogdGlsZWRJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGFzVW5pZm9ybUZy
YW1lU2l6ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0Nh
Y2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9zaXplLndpZHRoKCkgPiAwKTsKICAg
ICBBU1NFUlQobV9zaXplLmhlaWdodCgpID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGU2NzVjZDQyYmYzMTA5NGVhYWJlZDE4
MTA4NDBlNzhmMGExNjQxYjMuLjk3YjU2NTJmM2Q0Nzk5N2ZkZTRlOTExMTgzZTgwNGE5ZTZhMGY1
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQu
Y3BwCkBAIC0yMTQsNiArMjE0LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFFJbWFnZSog
aW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQog
ICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIGludCB3aWR0aCA9IGltYWdl
LT53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBpbWFnZS0+aGVpZ2h0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNE
U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dDNEU2tpYS5jcHAKaW5kZXggZjU2ZDcyNDVhZDEwZWMzYWU4NWJlZDQyNzA5ZTZmNmI0
NzJiMmM1MC4uMWYwNDU5YzU0YWM1MDVmYzcyYmQzY2IwODZlYWVlMjY4OGE1ZTJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjIsNyArNjIsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgICAgICBkZWNvZGVyLnNl
dERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNv
dW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEltYWdlRnJhbWVEYXRh
IGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAg
IEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJhbWVBdElu
ZGV4KDApOwogICAgICAgICBpZiAoIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaGFzQWxwaGEgPSBpbWFnZUZyYW1lRGF0YS5t
X2hhc0FscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggMjgwMjkzM2E5OTZjNTNjMzg3MTJkNGRkNzExODdiM2E2NTVkOTBmMi4uNDVjZjZkYmM4ODk4
NDZmZGIzYWMwM2QzMjA3MWQwNzJkOWY2YjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCkBAIC0zMTUsOCArMzE1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHZhbHVlKQogKi8K
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCiB7Ci0gICAgaWYgKGltYWdlID09IG1faW1hZ2UpCi0gICAgICAgIHJldHVybjsK
KyAgICBBU1NFUlQoaW1hZ2UgIT0gbV9pbWFnZSk7CiAKICAgICBtX2ltYWdlID0gaW1hZ2U7CiAg
ICAgaWYgKG1faW1hZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0ltYWdlV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d3gvSW1hZ2VXeC5jcHAKaW5kZXggYjdjMjQ5NmM3M2I1MjY1ZjFkODUzNGUzMzdlZThjMjBmZTMw
Mjk4OS4uYjRiNTdiZTliYTM0MzA1ZDM0OWZiZjRjNGU1YjQ3Njc1ZmI4MzE0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKQEAgLTk1LDYg
Kzk1LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXAp
CiAgICAgLCBtX2RlY29kZWRTaXplKDApCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiAg
ICAgLCBtX2ZyYW1lQ291bnQoMSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAg
ICAgbV9kZWNvZGVkU2l6ZSA9IGJpdG1hcC5HZXRXaWR0aCgpICogYml0bWFwLkdldEhlaWdodCgp
ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKGJpdG1hcC5HZXRXaWR0aCgpLCBiaXRtYXAuR2V0
SGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzJiNWRkYzJkZTMxZDAwNDA3MjdkNDRlOTUx
NjJhZGY2YmFjNzZjNy4uOTA0Zjg2Njg2MzMyZGE4YzMyNmRkMGY2ZWI1N2JiNDU1Njc3NWQ4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC0xNDAsNiArMTQwLDcgQEAgSW1hZ2VEZWNvZGVyKiBJbWFnZURl
Y29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpBbHBo
YU8KIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCiAgICAgOiBtX2hhc0FscGhhKGZhbHNlKQor
ICAgICwgbV9sYXN0RGVjb2RlZFJvdygwKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAg
ICAsIG1fZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNp
ZmllZCkKQEAgLTE2NSw2ICsxNjYsNyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRh
KCkKIHsKICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwogICAgIG1fYnl0ZXMgPSAwOworICAg
IG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAv
LyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoKSBjYWxscyB0aGlzCiAgICAgLy8gdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBv
dGhlciBmdW5jdGlvbnMgbGlrZSBpbml0RnJhbWVCdWZmZXIoKSBhbmQKQEAgLTE4Nyw2ICsxODks
NyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90
aGVyKQogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXplID0g
b3RoZXIubV9zaXplOwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOworICAgIG1f
bGFzdERlY29kZWRSb3cgPSBvdGhlci5tX2xhc3REZWNvZGVkUm93OwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGludCBu
ZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKICAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUoYmFja2lu
Z1N0b3JlU2l6ZSk7CiAgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKICAgICBt
X3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOworICAgIG1fbGFzdERlY29kZWRS
b3cgPSAwOwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggOTExODc4ZTFkOTYyMjI2NDdlN2YzNDdlNzY2MmQyZmJlZjNmMDI4Yi4uMjcw
M2U0ODhiOGU2OGE2ZTk2Y2RjYjVhYjJlOTU2ZTdhNTVhZGViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTEx
OCw2ICsxMTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5hdGl2ZUltYWdlUHRy
IGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29u
c3Q7CisgICAgICAgIGludCBsYXN0RGVjb2RlZFJvdygpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdERl
Y29kZWRSb3c7IH0KICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CiAgICAgICAgIEZyYW1lU3RhdHVz
IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVkIGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQpAQCAtMTI1LDYgKzEyNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNB
bHBoYShib29sIGFscGhhKTsKKyAgICAgICAgaW5saW5lIHZvaWQgc2V0TGFzdERlY29kZWRSb3co
aW50IGxhc3REZWNvZGVkUm93KSB7IG1fbGFzdERlY29kZWRSb3cgPSBsYXN0RGVjb2RlZFJvdzsg
fQogICAgICAgICB2b2lkIHNldENvbG9yUHJvZmlsZShjb25zdCBDb2xvclByb2ZpbGUmKTsKICAg
ICAgICAgdm9pZCBzZXRPcmlnaW5hbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByKSB7IG1fb3Jp
Z2luYWxGcmFtZVJlY3QgPSByOyB9CiAgICAgICAgIHZvaWQgc2V0U3RhdHVzKEZyYW1lU3RhdHVz
IHN0YXR1cyk7CkBAIC0xODEsNiArMTgzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBtX2NvbG9yUHJvZmlsZSBhbnltb3JlPwogICAgICAgICBD
b2xvclByb2ZpbGUgbV9jb2xvclByb2ZpbGU7CiAjZW5kaWYKKyAgICAgICAgaW50IG1fbGFzdERl
Y29kZWRSb3c7CiAgICAgICAgIEludFJlY3QgbV9vcmlnaW5hbEZyYW1lUmVjdDsgLy8gVGhpcyB3
aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBidWZmZXIgZXhjZXB0IGZvciBHSUYgZnJhbWVzIHdob3NlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgcmVjdCB3YXMgc21hbGxl
ciB0aGFuIHRoZQpAQCAtMjI4LDYgKzIzMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAgICAgICAgIH0K
IAorICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KKwogICAgICAgICAvLyBMYXppbHktZGVjb2RlcyBlbm91Z2ggb2YgdGhlIGltYWdlIHRv
IGdldCB0aGUgc2l6ZSAoaWYgcG9zc2libGUpLgogICAgICAgICAvLyBGSVhNRTogUmlnaHQgbm93
IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFjdG9yIHRoZQogICAgICAg
ICAvLyBkZWNvZGUgY2FsbCBvdXQgYW5kIHVzZSBpdCBoZXJlLgpAQCAtMjc2LDYgKzI4MSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBwb2lu
dGVyLgogICAgICAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXpl
X3QpID0gMDsKIAorICAgICAgICAvLyBSZXR1cm5zIGFuIEltYWdlRGVjb2Rlci1vd25lZCBwb2lu
dGVyIHdpdGhvdXQgZGVjb2RpbmcgbW9yZS4KKyAgICAgICAgSW1hZ2VGcmFtZSogZmlyc3RJbWFn
ZUZyYW1lV2l0aG91dERlY29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Zy
YW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpID8gMCA6ICZtX2ZyYW1lQnVmZmVyQ2FjaGVbMF07Cisg
ICAgICAgIH0KKwogICAgICAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJv
b2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQogICAgICAg
ICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggNmE2NWU2MTdkMTllNjdiZmEyMTgwNTM4N2MxMTk1ZGE0ODIx
ZGI2ZC4uYmRjYWVmMDVlYTQwMTE1ZDA2Y2Y3MzVmMDkxOWFhYzRiMjE5ZWVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTcsNiArMTU3LDcgQEAg
aW50IEltYWdlUmVhZGVyOjpkZWNvZGUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBJbWFn
ZUZyYW1lKiBhRnJhbWUpCiAgICAgICAgICAgICBhRnJhbWUtPnNldFJHQkEoaSwgaiwgY3VyUHRy
WzBdLCBjdXJQdHJbMV0sIGN1clB0clsyXSwgMjU1KTsKICAgICAgICAgICAgIGN1clB0ciArPSAz
OwogICAgICAgICB9CisgICAgICAgIGFGcmFtZS0+c2V0TGFzdERlY29kZWRSb3coaik7CiAgICAg
fQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMGEy
NDhjN2QzYmNiMTFjYWQ3YzY3Njk1ZWI4Mjc1NzUyNzgyNDkzLi5mNzRkZGUzYTBkZmZhYWI3OWIw
NWFiNDM4YmQxZmY4ZmVhMmMyNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NjQsOCArNjQsMTUgQEAgdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIAogYm9vbCBCTVBJbWFnZURlY29kZXI6Omlz
U2l6ZUF2YWlsYWJsZSgpCiB7Ci0gICAgaWYgKCFJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJs
ZSgpKQorICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkgeworICAgICAg
ICAvLyBPbmx5IEJNUEltYWdlRGVjb2RlciBtdXN0IG1ha2UgbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
IGluIGlzU2l6ZUF2YWlsYWJsZSgpLAorICAgICAgICAvLyBiZWNhdXNlIHRoZSBkZWZhdWx0IHZh
bHVlIG9mIEltYWdlRnJhbWU6Om1fbGFzdERlY29kZWRSb3cgY2FuIGJlICJoZWlnaHQgLSAxIi4K
KyAgICAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IG1fZnJhbWVCdWZmZXJDYWNoZS5yZXNpemUoMSk7CisgICAgICAgICAgICBtX2ZyYW1lQnVmZmVy
Q2FjaGUuZmlyc3QoKS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgICAgIH0KICAgICAgICAgZGVjb2RlKHRydWUpOworICAgIH0KIAogICAgIHJldHVybiBJbWFn
ZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAK
aW5kZXggNWMwMDU1MzRlY2Q5MjEzNGExM2IzMjk1ODkyNzc5MGYwN2FkMGY4MS4uNGY3ZTMxNzll
NjY2MzM4YTNhMTE0YjFiMjJhMWUzNDk0ODM5NDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIu
Y3BwCkBAIC02NCw4ICs2NCwxMSBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVAoYm9v
bCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gcHJvY2Vzc0luZm9I
ZWFkZXIoKSBzZXQgdGhlIHNpemUsIHNvIGlmIHRoYXQncyBhbGwgd2UgbmVlZGVkLCB3ZSdyZSBk
b25lLgotICAgIGlmIChvbmx5U2l6ZSkKKyAgICBpZiAob25seVNpemUpIHsKKyAgICAgICAgaWYg
KCFtX2lzVG9wRG93bikKKyAgICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyht
X3BhcmVudC0+c2l6ZSgpLmhlaWdodCgpIC0gMSk7CiAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KIAogICAgIC8vIFJlYWQgYW5kIHByb2Nlc3MgdGhlIGJpdG1hc2tzLCBpZiBuZWVkZWQuCiAg
ICAgaWYgKG1fbmVlZFRvUHJvY2Vzc0JpdG1hc2tzICYmICFwcm9jZXNzQml0bWFza3MoKSkKQEAg
LTYyNCw2ICs2MjcsNyBAQCBib29sIEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzUkxFRGF0YSgpCiAK
ICAgICAgICAgICAgICAgICBtX2RlY29kZWRPZmZzZXQgKz0gMjsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyhtX2Nvb3JkLnkoKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC03MTcsNiArNzIxLDcgQEAgQk1QSW1hZ2VSZWFkZXI6OlByb2Nl
c3NpbmdSZXN1bHQgQk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NOb25STEVEYXRhKGJvb2wgaW5STEUs
IGkKICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudChwaXhlbCwgMiksIGFscGhh
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERl
Y29kZWRSb3cobV9jb29yZC55KCkpOwogCiAgICAgICAgIC8vIFN1Y2Nlc3MsIGtlZXAgZ29pbmcu
CiAgICAgICAgIG1fZGVjb2RlZE9mZnNldCArPSBwYWRkZWROdW1CeXRlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKaW5kZXggNWY2MTkzYjhmOWUxYmE5MzdiNmUzZmM3MzE3NDkyNDM0ZGFh
ZTJkYS4uNzE5OGExMWMxZjE1NjgwMGM3YWJiMWZmZWE0MDFiMmM3NTkwODViYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTI0OSwxMCArMjQ5LDE0IEBAIGJvb2wgR0lGSW1hZ2VE
ZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBmcmFtZUluZGV4LCB1bnNpZ25lZCBjaGFy
KiByb3dCdWZmCiAgICAgICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoeCwgeUJlZ2luLCAwLCAw
LCAwLCAwKTsKICAgICAgICAgfQogICAgIH0KKyAgICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3co
eUJlZ2luKTsKIAogICAgIC8vIFRlbGwgdGhlIGZyYW1lIHRvIGNvcHkgdGhlIHJvdyBkYXRhIGlm
IG5lZWQgYmUuCi0gICAgaWYgKHJlcGVhdENvdW50ID4gMSkKKyAgICBpZiAocmVwZWF0Q291bnQg
PiAxKSB7CiAgICAgICAgIGJ1ZmZlci5jb3B5Um93TlRpbWVzKHhCZWdpbiwgeEVuZCwgeUJlZ2lu
LCB5RW5kKTsKKyAgICAgICAgQVNTRVJUKCh5RW5kIC0gMSkgPj0gMCk7CisgICAgICAgIGJ1ZmZl
ci5zZXRMYXN0RGVjb2RlZFJvdyh5RW5kIC0gMSk7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0zOTAsNiArMzk0LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1
ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgICBmb3IgKGludCB5ID0gcHJl
dlJlY3QueSgpOyB5IDwgcHJldlJlY3QubWF4WSgpOyArK3kpIHsKICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IHggPSBwcmV2UmVjdC54KCk7IHggPCBwcmV2UmVjdC5tYXhYKCk7ICsreCkKICAg
ICAgICAgICAgICAgICAgICAgICBidWZmZXItPnNldFJHQkEoeCwgeSwgMCwgMCwgMCwgMCk7Cisg
ICAgICAgICAgICAgICAgICBidWZmZXItPnNldExhc3REZWNvZGVkUm93KHkpOwogICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgIGlmICgocHJldlJlY3Qud2lkdGgoKSA+IDApICYmIChwcmV2
UmVjdC5oZWlnaHQoKSA+IDApKQogICAgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRIYXNBbHBo
YSh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDkxZjEyMzZiMzU5
YmMxNTVhZjM3YzdmZTJjZTM2ZWE3M2M1MDk0OTYuLjQ4NjFjYjY2NzIzOTc4Y2JkYjM3NzhlMGIz
NzgxOThlZWI5YjA0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTc3
LDYgKzU3Nyw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAg
ICBpZiAodHVyYm9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2UpKSB7CiAgICAgICAgIEFT
U0VSVCghbV9zY2FsZWQpOwogICAgICAgICB3aGlsZSAoaW5mby0+b3V0cHV0X3NjYW5saW5lIDwg
aW5mby0+b3V0cHV0X2hlaWdodCkgeworICAgICAgICAgICAgYnVmZmVyLnNldExhc3REZWNvZGVk
Um93KGluZm8tPm91dHB1dF9zY2FubGluZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBy
b3cgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihidWZmZXIuZ2V0QWRkcigwLCBp
bmZvLT5vdXRwdXRfc2NhbmxpbmUpKTsKICAgICAgICAgICAgIGlmIChqcGVnX3JlYWRfc2Nhbmxp
bmVzKGluZm8sICZyb3csIDEpICE9IDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjI4LDYgKzYyOSw3IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVz
KCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGRlc3RZKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTM4
ZDVjNTEyOTFlYTI2ZjY5NjQzZjZhYTQ0ODg0YmI1YzY0ODBlZi4uODEwY2FhNzIwODIxOWZmZjZj
ZjYyOTc0ZThlZjdlZjFiMzQ1MWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTUyMCw2ICs1MjAsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2ln
bmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAKICAgICBpZiAobm9uVHJp
dmlhbEFscGhhICYmICFidWZmZXIuaGFzQWxwaGEoKSkKICAgICAgICAgYnVmZmVyLnNldEhhc0Fs
cGhhKG5vblRyaXZpYWxBbHBoYSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHkpOwog
fQogCiB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cG5nQ29tcGxldGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VE
ZWNvZGVyU2tpYS5jcHAKaW5kZXggNWNjMTMyYzRkNDg0MDBiODE1MmVlNWY0ZmVmMjI0MmM0Mjlk
YjZiNi4uMTMzMThhMzg0NmZmNWFlYmQ5MzAyYWQzMmUxNTMyM2RkODczOGNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29k
ZXJTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIEltYWdlRnJhbWUmIElt
YWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKIHZvaWQgSW1hZ2VG
cmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogewogICAgIG1fYml0bWFwLmJpdG1hcCgpLnJlc2V0KCk7
CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5Owog
ICAgIC8vIE5PVEU6IERvIG5vdCByZXNldCBvdGhlciBtZW1iZXJzIGhlcmU7IGNsZWFyRnJhbWVC
dWZmZXJDYWNoZSgpCiAgICAgLy8gY2FsbHMgdGhpcyB0byBmcmVlIHRoZSBiaXRtYXAgZGF0YSwg
YnV0IG90aGVyIGZ1bmN0aW9ucyBsaWtlCkBAIC03Niw2ICs3Nyw3IEBAIGJvb2wgSW1hZ2VGcmFt
ZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAKICAgICBtX2JpdG1h
cC5iaXRtYXAoKS5yZXNldCgpOwogICAgIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgb3RoZXJCaXRt
YXAgPSBvdGhlci5tX2JpdG1hcDsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gb3RoZXIubV9sYXN0
RGVjb2RlZFJvdzsKICAgICByZXR1cm4gb3RoZXJCaXRtYXAuYml0bWFwKCkuY29weVRvKCZtX2Jp
dG1hcC5iaXRtYXAoKSwgb3RoZXJCaXRtYXAuYml0bWFwKCkuY29uZmlnKCkpOwogfQogCkBAIC04
NCw2ICs4Niw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBu
ZXdIZWlnaHQpCiAgICAgLy8gc2V0U2l6ZSgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLCBp
dCBsZWFrcyBtZW1vcnkgb3RoZXJ3aXNlLgogICAgIEFTU0VSVCghd2lkdGgoKSAmJiAhaGVpZ2h0
KCkpOwogCisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IDA7CiAgICAgbV9iaXRtYXAuYml0bWFwKCku
c2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgbmV3V2lkdGgsIG5ld0hlaWdo
dCk7CiAgICAgaWYgKCFtX2JpdG1hcC5iaXRtYXAoKS5hbGxvY1BpeGVscygpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwODJlMzNk
ZGIyYTM2MGUzODg4ZDc5YjAzYTljMjFjY2RiOGMwM2MyLi5hOWY5OGFkODBmNmYxOTgwNThkMmFm
ZGViYjZhNDA5ZTIzYWU3OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAg
LTEzMiwxOSArMTMyLDI2IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVNpemUpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfQogCi0gICAgc3dp
dGNoIChXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNpemUpKSB7Ci0gICAg
Y2FzZSBWUDhfU1RBVFVTX09LOgotICAgICAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6
OkZyYW1lQ29tcGxldGUpOwotICAgICAgICBXZWJQSURlbGV0ZShtX2RlY29kZXIpOwotICAgICAg
ICBtX2RlY29kZXIgPSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFZQOF9TVEFU
VVNfU1VTUEVOREVEOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKKyAgICBj
b25zdCBWUDhTdGF0dXNDb2RlIHN0YXR1cyA9IFdlYlBJVXBkYXRlKG1fZGVjb2RlciwgZGF0YUJ5
dGVzLCBkYXRhU2l6ZSk7CisgICAgaWYgKHN0YXR1cyAhPSBWUDhfU1RBVFVTX09LICYmIHN0YXR1
cyAhPSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkgewogICAgICAgICBXZWJQSURlbGV0ZShtX2RlY29k
ZXIpOwogICAgICAgICBtX2RlY29kZXIgPSAwOwogICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7
CiAgICAgfQorICAgIGludCBsYXN0WSA9IDA7CisgICAgaWYgKCFXZWJQSURlY0dldFJHQihtX2Rl
Y29kZXIsICZsYXN0WSwgMCwgMCwgMCkpCisgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKKyAg
ICBBU1NFUlQobGFzdFkgPj0gMCk7CisgICAgQVNTRVJUKGxhc3RZIDw9IHNpemUoKS5oZWlnaHQo
KSk7CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KGxhc3RZID8gbGFzdFkgLSAxIDogMCk7
CisKKyAgICBpZiAoc3RhdHVzID09IFZQOF9TVEFUVVNfU1VTUEVOREVEKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBidWZmZXIuc2V0U3RhdHVzKEltYWdlRnJhbWU6OkZyYW1lQ29tcGxl
dGUpOworICAgIFdlYlBJRGVsZXRlKG1fZGVjb2Rlcik7CisgICAgbV9kZWNvZGVyID0gMDsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggNDhlYTA1NDcwZGRmMDRiZDEwNDJkNWVi
MzBjMTZiZmNlNzhkM2IxNC4uOGU2Yjk0OGVlNmU2OGQzYWZkMDNmNjcwODdmMmExMDMyMjQ4ZWVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zMTEsNyAr
MzExLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIExheW91dFVuaXQg
dXNhYmxlV2lkdGggPSBjV2lkdGggLSAyOwogICAgICAgICAgICAgTGF5b3V0VW5pdCB1c2FibGVI
ZWlnaHQgPSBjSGVpZ2h0IC0gMjsKIAotICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKTsKKyAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IHRv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
KS5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIHVzYWJsZVdpZHRoID49IGltYWdlLT53aWR0aCgp
ICYmIHVzYWJsZUhlaWdodCA+PSBpbWFnZS0+aGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yKGZyYW1l
KCkpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAg
ICAgICAgICAgaWYgKGNlbnRlclkgPCAwKQogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0g
MDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciAr
IGxlZnRQYWQgKyBjZW50ZXJYICsgMSwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIDEp
OwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGlt
YWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIEludFJlY3Qocm91bmRlZEludFBvaW50KHBh
aW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVTb3VyY2VPdmVy
LCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgICAgICAgICBlcnJv
clBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDIsNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdAogICAgIGlmICghbV9pbWFnZVJlc291cmNlLT5oYXNJ
bWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpIHx8IGFsaWduZWRSZWN0
LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoYWxp
Z25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkpOworICAgIEltYWdlKiBpbWcg
PSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSk7CiAg
ICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NTAs
NyArNDUwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QKICAgICBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWx0ID8gaW1hZ2VFbHQtPmNvbXBvc2l0ZU9wZXJh
dG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0g
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVj
dC5zaXplKCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdl
KGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBjb250
ZXh0LT5kcmF3SW1hZ2UoaW1nLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBj
b21wb3NpdGVPcGVyYXRvciwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgdXNlTG93
UXVhbGl0eVNjYWxpbmcpOwogfQogCiBib29sIFJlbmRlckltYWdlOjpib3hTaGFkb3dTaG91bGRC
ZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRh
bmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIFJlbmRl
ckltYWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CiAKICAgICAvLyBDaGVjayBmb3Ig
Yml0bWFwIGltYWdlIHdpdGggYWxwaGEuCiAgICAgSW1hZ2UqIGltYWdlID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZSgpLmdldCgpOwotICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0JpdG1hcElt
YWdlKCkgfHwgaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCisgICAgaWYgKCFpbWFnZSB8
fCAhaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSB8fCB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlKGlt
YWdlKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggOTg4NmZiMzE5ODIzNTNkNjQwMjNmNTc0YjAwYzE0
YTIwZmIxZmMyYS4uOWMzNzRlZjRiNGM1NGQzY2MyYjRhNTJhOGE1Yjg0ZTlkOGZiNzdjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKIAogI2luY2x1
ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2lu
Y2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC0xMDc5LDggKzEwODAsMjEgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQogICAgIGlmICghY2FjaGVk
SW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRoaXMgaXMgYSBu
by1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVyIGxheWVyIGZvciB0aGUgaW1h
Z2UuCi0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOworICAg
IGlmIChpbWFnZSAhPSBtX2NvbXBvc2l0ZWRJbWFnZSkgeworICAgICAgICAvLyBXZSBoYXZlIHRv
IHdhaXQgdW50aWwgdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQgYmVmb3JlIHNldHRpbmcgaXQg
b24gdGhlIGxheWVyLgorICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAhdG9S
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSktPmN1cnJlbnRGcmFtZUlzQ29tcGxldGUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8SW1hZ2U+IGRlY29kZWRCaXRt
YXBJbWFnZSA9IGltYWdlOworICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkgewor
ICAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIgPSBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgICAgIGRlY29kZWRCaXRtYXBJbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoaW1hZ2VQdHIpOworICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgaXMg
YSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFuIGlubmVyIGxheWVyIGZvciB0aGUg
aW1hZ2UuCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGRlY29k
ZWRCaXRtYXBJbWFnZS5nZXQoKSk7CisgICAgICAgIG1fY29tcG9zaXRlZEltYWdlID0gaW1hZ2U7
CisgICAgfQorCiAgICAgdXBkYXRlRHJhd3NDb250ZW50KCk7CiAgICAgCiAgICAgLy8gSW1hZ2Ug
YW5pbWF0aW9uIGlzICJsYXp5IiwgaW4gdGhhdCBpdCBhdXRvbWF0aWNhbGx5IHN0b3BzIHVubGVz
cyBzb21lb25lIGlzIGRyYXdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaAppbmRleCAwZjQyZDNmYjkxYjE3OTM1OTc5ZmRiMThkYmQwNmZjYTY4ZmJj
ODRjLi4wNzI4MGRjYjk1NDA0YTIxMDA0NWMyY2YwMjQ5ODExMWZlZGM3OTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0yNDEsNiArMjQx
LDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9sYXllckZvclZlcnRp
Y2FsU2Nyb2xsYmFyOwogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX2xheWVyRm9yU2Nyb2xs
Q29ybmVyOwogCisgICAgUmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKKwogICAgIElu
dFJlY3QgbV9jb21wb3NpdGVkQm91bmRzOwogCiAgICAgYm9vbCBtX2FydGlmaWNpYWxseUluZmxh
dGVkQm91bmRzOyAgICAgIC8vIGJvdW5kcyBoYWQgdG8gYmUgbWFkZSBub24temVybyB0byBtYWtl
IHRyYW5zZm9ybS1vcmlnaW4gd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA1NmJlNWNkNDE2YmNkZTI2ZTBhODU1YmUxYWRjZWEy
YjQzZmMwYjk1Li5hMTk2ZTc1ZjhhOWRmMWEyOGRjNmU3YmE5MDU0ZTk2ZjE1NTE1MzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5oIgorI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiU1ZH
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5oIgpAQCAtMTI3LDE0ICsxMjgsMTQgQEAgdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAg
ICAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCh0aGlzLCBjaGls
ZFBhaW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVy
aW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBt
X2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0g
dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFn
ZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBtX29iamVj
dEJvdW5kaW5nQm94OwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KDAsIDAsIGlt
YWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgICAgICAgICAgICAgU1ZHSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihu
b2RlKCkpOwogICAgICAgICAgICAgICAgIGltYWdlRWxlbWVudC0+cHJlc2VydmVBc3BlY3RSYXRp
bygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgICAgICAgICAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgICAgICAgICAgY2hpbGRQYWlu
dEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0
UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcAppbmRleCAzYmFlYTI3YzlmNTU0ODNhZjA1OGFh
ZmI2MTgxMDcyZTI0NGEwNmQwLi5jZGUxMzlmY2VjYWU1ODM4ZjM2MjVmOWM4Nzk5MGEzNzcyMTA5
NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0
YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJ
bWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgpOworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLnJlcXVl
c3RGcmFtZUF0SW5kZXgoaW5kZXgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBmcmFtZShB
ZG9wdENGLCBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gV2ViSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlU2tpYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZVNraWEuY3BwCmluZGV4IGZiMGRmN2NhZmZjYTFmYTBiMzdkNmU2M2E5ZWUxNzA4Mjg4NjA2MDUu
LjVkODY0YTI3YmE5MTA2MDAzNTkyOTFhNTc2YjI0NjQ2YjA1N2UxZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJJ
bWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29uc3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6
ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbWFnZUZyYW1lRGF0YSBp
bWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOworICAgIElt
YWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhID0gc291cmNlLnJlcXVlc3RGcmFtZUF0SW5kZXgo
aW5kZXgpOwogICAgIE93blB0cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gYWRvcHRQdHIoaW1h
Z2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdl
YkltYWdlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153221</attachid>
            <date>2012-07-19 04:11:43 -0700</date>
            <delta_ts>2012-07-25 18:16:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120719201141.patch</filename>
            <type>text/plain</type>
            <size>96107</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRjMWJjN2Q1YmNiOGU2
NmMwMWY5OGViNzc2ZDBkZmI0NDk2MzhhMC4uYjBhOGYwYzU5NTlhZjE4N2ZlZjUyNjU3M2NmYTIw
YmZjZjEzOWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxMi0wNy0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9J
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0lt
YWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpsYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpzZXRMYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAo
V2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNr
Z3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAg
ICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQp
OgorCiAyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlZmFjdG9yaW5nIG1ldGFkYXRhIG9mIEJpdG1hcEltYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyY2E0MGZiZTUyODM0NjllMjNlNTYxMDIwNzBlYWVmYzM3
NDJjNDAwLi42MGEwZmJjNjBhOGRiMTdkNzVkMzJiODQxN2ZmMGIxODE1ZDA3ZjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA3LTE3ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBwYXJhbGxl
bCBpbWFnZSBkZWNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdXRob3JlZCBieSBIdWFuZyBEb25nc3VuZyBhbmQgS3dhbmcgWXVsIFNlby4KKwor
ICAgICAgICBNYWtlIGltYWdlIGRlY29kaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQg
dGhlIG1haW4gdGhyZWFkIGNhbiBzcGVuZCBtb3JlCisgICAgICAgIHRpbWUgaW4gbG9hZGluZywg
cGFyc2luZywgc2NyaXB0aW5nIGFuZCBsYXlvdXQgd2hpbGUgaW1hZ2UgZGVjb2RpbmcgdGhyZWFk
cyBkZWNvZGUKKyAgICAgICAgaW1hZ2VzIGluIHRoZSBiYWNrZ3JvdW5kLgorCisgICAgICAgIFJl
ZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L3B1Yj9pZD0xMmdmN01oTkhm
dXBlUjNHZFJGLWgyVnpnODZ2aUNid1hxOF9KQnlIS2xnMAorICAgICAgICBmb3IgZGV0YWlsZWQg
ZXhwbGFuYXRpb24uCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKKzIwMTItMDctMTcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgUHJl
cGFyZSBmb3IgcGFyYWxsZWwgaW1hZ2UgZGVjb2Rlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZmVjZDQzMWQ5ODYzZjgxM2U1OTliYTdjZGI5YzMwOGQzNDI4MjFjOS4uMTNmYmMwMDExMTk2MDFk
ZmNjYTExZTJlNjA2NTA5ODYzYjFmNWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEyMDUs
OSArMTIwNSwxMSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVXb3JrZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRh
dGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggZTAzMmEzYmE2M2E2NTQzODdmMDk0Mjk0YjFkNWM0MTU0MjEwNThkOC4uYjU3ZWIy
MmJiYjI5Y2M0ZWNkMjJkZDdmZTQ5ZmQ5ZTRkZGU1Zjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zMjA5LDYgKzMyMDksMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjNDk1OTEwMzk1NjA3ZWUx
MTBjMzJhNjYyMjkzZTdhYmJlZGEzZDQwLi43NzE1OTdhZDFjZTdmZmZiOWQ3NThhYjhjN2Y2YjA1
OWNmZjgxOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk2NSwxMCArOTY1LDEyIEBAIFNPVVJDRVMgKz0g
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBcCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRl
ZEZvbnREYXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApA
QCAtMjA4NiwxMSArMjA4OCwxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludEhhc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1M
YXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBcCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGE2NmMzOWJiODU2ZDY5MGQ3ZDA1NWU1ODUzNjEwMDRmMzZm
ODliZGIuLjY4NzE3MTliOThkNGNiY2I3NWJlMjBlOGU1ZGRhZmQ4NzU3MWIzMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM1MDksMTEgKzM1MDksMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbElt
YWdlRGVjb2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyYTc0NGFmNjkzOGViNGY4YzAwNjI5
ZTZjOTA2NTcyNjQ4NDVmMGRjLi5hYzVkMzIwNjhhYmM3ZGY4ZGQ1ZWU3MTA3MmVlMmRlNmE1YzRh
YWFjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtMjk0MDYsNiArMjk0MDYsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNv
ZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQ
YXRoVHJhdmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjk0MzQsNiAr
Mjk0NDYsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGU2MjhlYjNmOGU5
Zjc5OGZlODAzZGFlMmFiNTQ1MTFkMzM1MTZmMC4uY2NiNWY2ZWE1YTkyOTE3MjUzY2YyN2VjNWZj
Yjg0YzU3NWMyZDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQyMCw2ICsxNDIwLDggQEAKIAkJNEIzMDQzQ0QwQUUwMzcz
QjAwQTgyNjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4MDkzMEVFRjUw
RDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdl
U291cmNlQ0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFn
ZVNvdXJjZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OworCQk1
QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzNDgwOTEwRUVG
NTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsgfTsKKwkJNUIz
NDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5MjBFRUY1MEQ0
MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJNEI2RkE2RjQw
QzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAw
MDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4
NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNl
Q0YuY3BwICovOyB9OwpAQCAtODUyNCw2ICs4NTI2LDggQEAKIAkJNEIzMDQzQ0IwQUUwMzczQjAw
QTgyNjQ3IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRp
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFy
dFJlcGxhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjMwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk1NjgsNiArMTk1NzIsOCBAQAogCQkJCUE4MEEzOEZE
MEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4
MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUz
ODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4MDkxMEVFRjUw
RDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJCQkJNUIzNDgw
OTIwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggKi8sCiAJCQkJ
QjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICov
LAogCQkJKTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NTI3LDYgKzI0NTMzLDcgQEAKIAkJCQk3RUU2
ODQ2RjEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0
MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
QTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzcxMCw2ICsyNzcxNyw3IEBACiAJCQkJNTE0Qzc2N0UwQ0U5
MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFC
NDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQz
MTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
RDMxNjBBNjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252
b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0ZDRjNjE5OTEz
ZDFiMzQ2OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2MGM0ODFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtNjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc1Vu
aWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCisgICAg
LCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5LDEyIEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICAvLyBOT1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBoZXJlLCB0aGF0
IHdpbGwgdHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGkuZS4gbmV2ZXIt
ZGVjb2RlZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFzcykgZnJhbWVz
IQotICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0Nv
bXBsZXRlKQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJyZW50IGZyYW1l
LCBiZWNhdXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAgICAgICAvLyBp
biByZXRhaW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRoaXMgZGVjb2Rl
ZCBpbWFnZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIHJlbW92ZWQg
aGVyZSwgdGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0ZSBib3guCisg
ICAgICAgIC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHJl
dGFpbmVkIG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmIChtX2ZyYW1lc1tp
XS5tX2ZyYW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJyZW50RnJhbWUg
IT0gaSkKICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRy
dWUpID8gMSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVz
Q2xlYXJlZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZy
YW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2FjaGluZ0ZyYW1l
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4aXN0IHdoZW4g
bV9pc0NvbXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3IGZyYW1lIGV2
ZW4gaWYgbV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdl
ZCBmb3IgZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4ID49IG1fZnJh
bWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2lzQ29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAgIG1faXNDYWNo
aW5nRnJhbWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAgICAgICAgbV9p
c0NhY2hpbmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNjcsMTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBp
bmRleCkKICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2Zy
YW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4
KGluZGV4KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4LCByZXRhaW5l
ZE1vZGVSZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJlY2VpdmVGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURh
dGEpCitib29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdAogewor
ICAgIHJldHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWluZWRNb2RlSW1h
Z2UtPnJldGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkaWRS
ZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGlt
YWdlRnJhbWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVk
KQoreworICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBpbmRpcmVjdGx5
IGluIHRoaXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVy
KG1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8vIG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVwbGFjZWQgd2l0
aCBuZXcgZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xlYXIgbV9mcmFt
ZSwgdGhlIG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQgZm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0IGJlIHJlbW92
ZWQgaGVyZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpbmRleF0u
Y2xlYXIodHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1l
c0NsZWFyZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZyYW1lRGF0YShp
bWFnZUZyYW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwpA
QCAtMjg4LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAgICAgICAvLyB0
byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRlcyAtPSBtX2Rl
Y29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAw
OwotICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKSB7CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0
aGlzLCBkZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tpbmRleF0ubV9p
c0NvbXBsZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCkKKyAgICAg
ICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywgSW50UmVjdChJ
bnRQb2ludCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMzA5LDcgKzM0
NSwxMyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFtZUR1cmF0aW9u
QXRJbmRleCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsK
KyAgICAvLyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29kZWQgYnkgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBtX2lzQ29tcGxl
dGUgaXMgdHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiBt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZy
YW1lSXNDb21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2NjlhMDUxMjFi
NS4uYzRkNTZmNzVlNTI3NTVmNDA1MDRiODhkZTc3ZWJhNjllNDBiOWY5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRtYXBJbWFnZSA6
IHB1YmxpYyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBj
bGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVk
SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZy
aWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0xOTIsNiArMTk1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgdmlydHVhbCBi
b29sIGN1cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBs
ZXRlKCk7CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7
CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwpA
QCAtMjAxLDcgKzIwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VP
YnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwg
Y29uc3QgSW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1l
QXRJbmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZh
bHNlLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjkzLDYgKzI5Nyw4IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7CiAgICAgdmlydHVh
bCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCByZXRhaW5lZE1vZGVS
ZW5kZXJpbmcoKSBjb25zdDsKKwogICAgIEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1h
Z2UgKHdpbGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CkBAIC0zMTcsNiArMzIzLDgg
QEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1Np
emU7IC8vIFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWlu
ZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNp
emVfdCBtX2ZyYW1lQ291bnQ7CiAKKyAgICBSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+
IG1fcmV0YWluZWRNb2RlSW1hZ2U7CisKICAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8g
V2hldGhlciBvciBub3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgogICAgIGJvb2wgbV9jaGVj
a2VkRm9yU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUg
Zm9yIHNvbGlkIGNvbG9yLgogCkBAIC0zMjcsNiArMzM1LDggQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgbV9zaXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0
aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KICAgICBt
dXRhYmxlIGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxlIGJvb2wg
bV9oYXZlRnJhbWVDb3VudCA6IDE7CisKKyAgICBib29sIG1faXNDYWNoaW5nRnJhbWUgOiAxOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCmluZGV4IDAyMDMzNGVjZmRkNTZjZWRhNDZlN2FhOWUzMjFlZWYxNTkyZDQzOTEuLjcz
YjU5M2Y2NTM1MTQ3NzU4NzM3ZTk0ZDVmZDUxNzVhNThiY2MyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM1LDkgKzM1LDEz
IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNl
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhcmFs
bGVsSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgaW50IHNfcmVzb2x1dGlvblRocmVzaG9s
ZEZvclBhcmFsbGVsID0gMzAwICogMzAwOworCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykKIHVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJ
bWFnZSA9IDEwMjQgKiAxMDI0OwogI2VuZGlmCkBAIC02NiwxMSArNzAsMTUgQEAgSW1hZ2VTb3Vy
Y2U6On5JbWFnZVNvdXJjZSgpCiB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lB
bGwsIHNpemVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9k
ZWNvZGVyKQorICAgICAgICAvLyBPbmx5IEdJRiBkZWNvZGVyIGltcGxlbWVudHMgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlLgorICAgICAgICBpZiAobV9kZWNvZGVyICYmICFtX3BhcmFsbGVsRGVjb2Rl
cikKICAgICAgICAgICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVm
b3JlRnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fcGFyYWxsZWxE
ZWNvZGVyLmdldCgpKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOworCiAgICAgZGVs
ZXRlIG1fZGVjb2RlcjsKICAgICBtX2RlY29kZXIgPSAwOwogICAgIGlmIChkYXRhKQpAQCAtODgs
NiArOTYsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0
aGUgZGF0YSBhbmQgaW5zdGFudGlhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRl
Y29kZXIgcGx1Z2luLgogICAgIC8vIElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxl
IHRvIGRldGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQog
ICAgIC8vIG1hZGUuCisKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAg
ICAgQVNTRVJUKG1fZGVjb2Rlcik7CisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5zZXREYXRh
KGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBp
ZiAoIW1fZGVjb2RlcikgewogICAgICAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJ
bWFnZVNvdXJjZVB0cj4oSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24s
IG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RF
Ul9ET1dOX1NBTVBMSU5HKQpAQCAtMTAyLDExICsxMTcsMTUgQEAgdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBTdHJp
bmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9w
YXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+
ZmlsZW5hbWVFeHRlbnNpb24oKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5m
aWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6Omlz
U2l6ZUF2YWlsYWJsZSgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNT
aXplQXZhaWxhYmxlKCk7CiB9CiAKQEAgLTExNiw2ICsxMzUsOCBAQCBJbnRTaXplIEltYWdlU291
cmNlOjpzaXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50
YXRpb24pCiAgICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFs
bGVsRGVjb2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXpl
KCk7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+c2l6ZSgpIDogSW50U2l6ZSgp
OwogfQogCkBAIC0xMjUsNiArMTQ2LDggQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXpl
QXRJbmRleChzaXplX3QgaW5kZXgsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlm
IChzaG91bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+c2l6ZSgpOwogICAgIHJldHVy
biBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogSW50U2l6
ZSgpOwogfQogCkBAIC0xNDAsMjMgKzE2MywxMjAgQEAgc2l6ZV90IEltYWdlU291cmNlOjpieXRl
c0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6
OnJlcGV0aXRpb25Db3VudCgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQor
ICAgICAgICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1f
ZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAogc2l6ZV90
IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERl
Y29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sIHJldGFpbmVkTW9kZVJlbmRl
cmluZykKK3sKKyAgICBBU1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgaW5kZXgpKTsK
KyAgICBBU1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgIW1fb2JzZXJ2ZXIpKTsKKwor
ICAgIGlmICghbV9kZWNvZGVyKSB7CisgICAgICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFt
ZUF0SW5kZXgoaW5kZXgsIEltYWdlRnJhbWVEYXRhKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VG
cmFtZURhdGEoKTsKKyAgICB9CisKKyAgICBpZiAoIXJldGFpbmVkTW9kZVJlbmRlcmluZyB8fCAh
bV9vYnNlcnZlciB8fCBmaXJzdEZyYW1lSXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm4gc2Vy
aWFsRGVjb2RlKGluZGV4KTsKKworICAgIGlmIChzaG91bGREZWNvZGVQYXJhbGxlbCgpKSB7Cisg
ICAgICAgIHBhcmFsbGVsRGVjb2RlKCk7CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YSgp
OworICAgIH0KKworICAgIHJldHVybiBzZXJpYWxEZWNvZGUoaW5kZXgpOworfQorCitib29sIElt
YWdlU291cmNlOjpzaG91bGREZWNvZGVQYXJhbGxlbCgpCit7CisgICAgQVNTRVJUKG1fZGVjb2Rl
cik7CisKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpID09IDEpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBmaWxlRXh0ID0gZmlsZW5hbWVFeHRlbnNp
b24oKTsKKyAgICBpZiAoZmlsZUV4dCA9PSAiaWNvIiB8fCBmaWxlRXh0ID09ICJnaWYiKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2l6ZSgpLmFyZWEoKSA8IHNfcmVzb2x1dGlvblRo
cmVzaG9sZEZvclBhcmFsbGVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZUlzQ29tcGxldGUoKQorewor
ICAgIEFTU0VSVChtX2RlY29kZXIpOworICAgIEltYWdlRnJhbWUqIGltYWdlRnJhbWUgPSAwOwor
ICAgIGlmICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIGltYWdlRnJhbWUgPSBtX2RlY29k
ZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFt
ZSAmJiBmcmFtZUlzQ29tcGxldGVBdEluZGV4KGltYWdlRnJhbWUpOworfQorCit2b2lkIEltYWdl
U291cmNlOjpwYXJhbGxlbERlY29kZSgpCit7CisgICAgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZO
ZWVkZWQoKTsKKyAgICBtX3BhcmFsbGVsRGVjb2Rlci0+ZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1h
Z2VTb3VyY2U6OmRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEp
Cit7CisgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVG
cmFtZUF0SW5kZXgoMCwgaW1hZ2VGcmFtZURhdGEsIHRydWUpOworCisgICAgaWYgKGltYWdlRnJh
bWVEYXRhLm1faXNDb21wbGV0ZSkKKyAgICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKK30K
Kwordm9pZCBJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKQorewor
ICAgIGlmICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyID0g
YWRvcHRSZWYobmV3IFBhcmFsbGVsSW1hZ2VEZWNvZGVyKHRoaXMsIG1fZGVjb2RlcikpOworfQor
Cit2b2lkIEltYWdlU291cmNlOjpjbGVhclBhcmFsbGVsRGVjb2RlcigpCiB7CiAgICAgQVNTRVJU
KG1fb2JzZXJ2ZXIpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5pbnZhbGlkYXRlKCk7CisgICAg
bV9wYXJhbGxlbERlY29kZXIuY2xlYXIoKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3Vy
Y2U6OnNlcmlhbERlY29kZShzaXplX3QgaW5kZXgpCit7CisgICAgYm9vbCBwYXJhbGxlbERlY29k
ZXJDYW5jZWxlZCA9IGZhbHNlOworICAgIC8vIFJlbmRlckltYWdlIGFuZCBDYW52YXNFbGVtZW50
IGNhbiBzaGFyZSB0aGUgc2FtZSBDYWNoZWRJbWFnZS4KKyAgICBpZiAobV9wYXJhbGxlbERlY29k
ZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgICAgICBjbGVhclBh
cmFsbGVsRGVjb2RlcigpOworICAgICAgICBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IHRydWU7
CisgICAgfQorCiAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFt
ZUF0SW5kZXgoaW5kZXgpOwotICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgo
aW5kZXgsIGltYWdlRnJhbWVEYXRhKTsKKworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBt
X29ic2VydmVyLT5kaWRSZWNlaXZlRnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSwg
ZmFsc2UgLyogcmV0YWluZWRNb2RlICovLCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCk7CisKKyAg
ICByZXR1cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogeworICAgIEFTU0VSVCghbV9wYXJh
bGxlbERlY29kZXIpOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gSW1hZ2VG
cmFtZURhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKaW5kZXggMmU2NGQ3ZGVhNzM3MzRlN2Y3MDhhZjYwZDI5YTMxYjg0MTJmMTgwOS4u
YzQyNzllYzlmY2FkZDQzNDI1ZDMzMmJkZDgzOWJiNTVjYzUyNGE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yOSw2ICsyOSw5IEBA
CiAjZGVmaW5lIEltYWdlU291cmNlX2gKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIK
KyNpZiAhVVNFKENHKQorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIK
KyNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KQEAgLTY1LDYgKzY4LDkgQEAgY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIGNsYXNz
IEltYWdlU291cmNlT2JzZXJ2ZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7Cisj
aWYgIVVTRShDRykKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOworI2VuZGlmCiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKICNpZiBVU0UoQ0cpCkBAIC0xNDMsNyArMTQ5LDExIEBAIGNvbnN0IGlu
dCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5p
dGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi1jbGFzcyBJbWFnZVNv
dXJjZSB7CitjbGFzcyBJbWFnZVNvdXJjZQorI2lmICFVU0UoQ0cpCisgICAgOiBwdWJsaWMgUGFy
YWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW1hZ2VTb3VyY2UpOwogcHVibGljOgogICAgIGVudW0gQWxwaGFPcHRpb24gewpAQCAt
MjEwLDE3ICsyMjAsMjQgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25z
dDsKIAotICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBj
bGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gTk9URTogQ2FsbGVycyBzaG91bGQg
bm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsK
ICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICB2b2lkIHJlcXVlc3RG
cmFtZUF0SW5kZXgoc2l6ZV90KTsKLSAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5k
ZXgoc2l6ZV90KTsKKyAgICAvLyBOT1RFOiBJZiBJbWFnZVNvdXJjZSBoYXMgSW1hZ2VTb3VyY2VP
YnNlcnZlciwgdGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlc3VsdCB2aWEgZGlkRGVjb2RlKCkuCisg
ICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSByZXN1bHQuIGUuZy4gR3Jh
cGhpY3NDb250ZXh0M0QKKyAgICBJbWFnZUZyYW1lRGF0YSByZXF1ZXN0RnJhbWVBdEluZGV4KHNp
emVfdCwgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUo
SU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhl
bHNQZXJEZWNvZGVkSW1hZ2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsg
fQogICAgIHN0YXRpYyB2b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBt
YXhQaXhlbHMpIHsgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KICNl
bmRpZgogCisjaWYgIVVTRShDRykKKyAgICAvLyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVy
CisgICAgdmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpOworI2Vu
ZGlmCisKIHByaXZhdGU6CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVBdEluZGV4KHNp
emVfdCk7CiAjaWYgVVNFKENHKQogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVf
dCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9y
IG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCkBAIC0yMzMsOCArMjUwLDIw
IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1h
Z2VGcmFtZSopIGNvbnN0OwogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIHZvaWQgY3JlYXRl
UGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyUGFyYWxsZWxEZWNvZGVy
KCk7CisgICAgYm9vbCBzaG91bGREZWNvZGVQYXJhbGxlbCgpOworICAgIGJvb2wgZmlyc3RGcmFt
ZUlzQ29tcGxldGUoKTsKKyAgICB2b2lkIHBhcmFsbGVsRGVjb2RlKCk7CisgICAgSW1hZ2VGcmFt
ZURhdGEgc2VyaWFsRGVjb2RlKHNpemVfdCk7CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURl
Y29kZXI+IG1fcGFyYWxsZWxEZWNvZGVyOworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJj
ZVB0ciBtX2RlY29kZXI7CiAgICAgSW1hZ2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKKwog
ICAgIEFscGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCmluZGV4IDcyYWY3MDhjN2VjZDExZjgxNmU4
YThlMDI3MjkwMjYwNjA4MjE0MjguLmQzMjA3ODJkOGU4MzBjMDRlOTlmMDFlMTQzZmQyOWE5NGE4
MzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZU9ic2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSW1hZ2VGcmFtZURh
dGE7CiAvLyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIElt
YWdlU291cmNlLCBpbmNsdWRpbmcgZGVjb2RpbmcuCiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVy
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXpl
X3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFp
bmVkID0gZmFsc2UsIGJvb2wgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSkgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW1hZ2VTb3VyY2VPYnNlcnZlcigpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiOWNmYWY1NTMxMTM3ODQ1MGQzMzE0NjQyZWQxYzg4
MzY5NDdhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rl
ci5oIgorCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJy
YXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25B
cnJheVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IFBhcmFsbGVsRnJhbWVEYXRhOwordm9pZCBkaWREZWNvZGVUYXNrQ2Fs
bGJhY2soUGFyYWxsZWxGcmFtZURhdGEqKTsKK3N0YXRpYyBJbWFnZUZyYW1lRGF0YSBjcmVhdGVJ
bWFnZUZyYW1lRGF0YShQYXJhbGxlbEZyYW1lRGF0YSopOworCitQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6UGFyYWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciogb2Jz
ZXJ2ZXIsIEltYWdlRGVjb2RlciogZGVjb2RlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIp
CisgICAgLCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQorICAgICwgbV9ieXRlc09mRGF0YUNv
bnN1bWVkKDApCisgICAgLCBtX2ltYWdlRGVjb2RlcigwKQoreworICAgIGluaXRpYWxpemUoZGVj
b2Rlcik7Cit9CisKK1BhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29kZXIo
KQoreworICAgIEFTU0VSVCghdmFsaWQoKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29k
ZXI6OmluaXRpYWxpemUoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGRlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpICYmICFk
ZWNvZGVyLT5zaXplKCkuaXNFbXB0eSgpKTsKKworICAgIG1fc2l6ZSA9IGRlY29kZXItPnNpemUo
KTsKKyAgICBtX2ZpbGVuYW1lRXh0ZW5zaW9uID0gZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24o
KTsKKworICAgIHNldERhdGEoZGVjb2Rlci0+ZGF0YSgpLCBkZWNvZGVyLT5pc0FsbERhdGFSZWNl
aXZlZCgpKTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZy
YW1lLnNldFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX2lt
YWdlRGVjb2RlciA9IGRlY29kZXI7CisgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFs
c2UpOworICAgIC8vIEFmdGVyIHRoaXMgbGluZSwgaXQgaXMgaWxsZWdhbCBmb3IgdGhlIG1haW4g
dGhyZWFkIHRvIGFjY2VzcyBtX2ltYWdlRGVjb2Rlci4KKworICAgIC8vIFRoaXMgbXVzdCBiZSB0
aGUgbGFzdCBsaW5lIGJlY2F1c2UgSW1hZ2VEZWNvZGVXb3JrZXIgZ3VhcmFudGVlcworICAgIC8v
IHRoZSB2aXNpYmlsaXR5IG9mIG1lbWJlcnMgaW4gdGhlIHRhc2sgdGhyZWFkLgorICAgIG1fZGVj
b2RlV29ya2VyID0gSW1hZ2VEZWNvZGVXb3JrZXI6OmFjcXVpcmVTaGFyZWRXb3JrZXIoKTsKK30K
Kwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgaWYg
KG1fZGVjb2RlV29ya2VyLmdldCgpKSB7CisgICAgICAgIG1fZGVjb2RlV29ya2VyLT5pbnZhbGlk
YXRlKCk7CisgICAgICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgfQorICAgIC8vIFRo
ZSBtYWluIHRocmVhZCBjYW4gdXNlIG1faW1hZ2VEZWNvZGVyIGJlY2F1c2Ugb3RoZXIgdGhyZWFk
cyBkbyBub3QgYWNjZXNzIG1faW1hZ2VEZWNvZGVyIGFmdGVyIHRoaXMgbGluZS4KKworICAgIG1f
aW1hZ2VEZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSwgbV9pc0FsbERhdGFSZWNlaXZlZCk7
CisKKyAgICBtX3NpemUgPSBJbnRTaXplKCk7CisgICAgbV9maWxlbmFtZUV4dGVuc2lvbiA9ICIi
OworCisgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIG1fZGF0YS5jbGVhcigp
OworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2ltYWdlRnJhbWUgPSBJ
bWFnZUZyYW1lKCk7CisKKyAgICBpZiAobV9kYXRhRm9yVGFzay5nZXQoKSkKKyAgICAgICAgbV9k
YXRhRm9yVGFzay5jbGVhcigpOworCisgICAgbV9pbWFnZURlY29kZXIgPSAwOworfQorCit2b2lk
IFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lz
QWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOworICAgIG1fZGF0YSA9IGRhdGE7Cit9
CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworICAgIEFTU0VSVCgh
bV9zaXplLmlzRW1wdHkoKSk7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdt
ZW50ID0gZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7CisgICAgaWYgKCFzZWdtZW50LmdldCgpKQor
ICAgICAgICByZXR1cm47CisgICAgbV9kZWNvZGVXb3JrZXItPnBvc3RUYXNrKGJpbmQoJlBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpkZWNvZGVUYXNrLCB0aGlzLCBzZWdtZW50LnJlbGVhc2UoKSkpOwor
fQorCitQYXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ+
IFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpleHRyYWN0U2VnbWVudEZvclRhc2soKQoreworICAgIEFT
U0VSVChtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPj0gMCAmJiBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQg
PD0gbV9kYXRhLT5zaXplKCkpOworCisgICAgaW50IHNpemVPZlNlZ21lbnQgPSBtX2RhdGEtPnNp
emUoKSAtIG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBpZiAoIXNpemVPZlNlZ21lbnQpCisg
ICAgICAgIHJldHVybiBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4oKTsKKworICAgIE93
blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+IHNlZ21lbnQoYWRvcHRQdHIobmV3IEVuY29kZWREYXRh
U2VnbWVudCgpKSk7CisgICAgY29uc3QgY2hhciogc3JjUHRyID0gbV9kYXRhLT5kYXRhKCkgKyBt
X2J5dGVzT2ZEYXRhQ29uc3VtZWQ7CisgICAgc2VnbWVudC0+bV9zZWdtZW50LmFwcGVuZChzcmNQ
dHIsIHNpemVPZlNlZ21lbnQpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IG1fZGF0YS0+
c2l6ZSgpOworCisgICAgc2VnbWVudC0+bV9pc0FsbERhdGFSZWNlaXZlZCA9IG1faXNBbGxEYXRh
UmVjZWl2ZWQ7CisKKyAgICByZXR1cm4gc2VnbWVudC5yZWxlYXNlKCk7Cit9CisKK3N0cnVjdCBQ
YXJhbGxlbEZyYW1lRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyYWxsZWxGcmFt
ZURhdGEpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxp
Y2l0IFBhcmFsbGVsRnJhbWVEYXRhKFBhc3NSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IHBh
cmFsbGVsRGVjb2RlcikKKyAgICAgICAgOiBtX3BhcmFsbGVsRGVjb2RlcihwYXJhbGxlbERlY29k
ZXIpCisgICAgICAgICwgbV9kZWNvZGVkU2VnbWVudCgpCisgICAgICAgICwgbV9zdGF0dXMoSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAgICAg
ICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB+UGFyYWxs
ZWxGcmFtZURhdGEoKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURl
Y29kZXI+IG1fcGFyYWxsZWxEZWNvZGVyOworICAgIE93bkFycmF5UHRyPEltYWdlRnJhbWU6OlBp
eGVsRGF0YT4gbV9kZWNvZGVkU2VnbWVudDsKKyAgICBJbWFnZUZyYW1lOjpGcmFtZVN0YXR1cyBt
X3N0YXR1czsKKyAgICBib29sIG1faGFzQWxwaGE7CisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxw
aGE7CisgICAgSW50UmVjdCBtX2RlY29kZWRSZWN0OworfTsKKwordm9pZCBQYXJhbGxlbEltYWdl
RGVjb2Rlcjo6ZGVjb2RlVGFzayhQYXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNv
ZGVkRGF0YVNlZ21lbnQ+IHBhc3NTZWdtZW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAgICBPd25QdHI8RW5jb2RlZERh
dGFTZWdtZW50PiBzZWdtZW50ID0gcGFzc1NlZ21lbnQ7CisKKyAgICAvLyAxLiBTZW5kIHNlZ21l
bnQgZGF0YSB0byBJbWFnZURlY29kZXIuCisgICAgaWYgKCFtX2RhdGFGb3JUYXNrKSB7CisgICAg
ICAgIG1fZGF0YUZvclRhc2sgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgLy8gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBkb2VzIG5vdCBhbGxvdyB0
d28gdGhyZWFkcyB0byBhY2Nlc3Mgb25lIFJlZkNvdW50ZWQgb2JqZWN0LgorICAgICAgICAvLyBt
X2RhdGFGb3JUYXNrIGlzIHVzZWQgYnkgYm90aCB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSB0YXNr
IHRocmVhZDoKKyAgICAgICAgLy8gVGhlIHRhc2sgdGhyZWFkIGNyZWF0ZXMsIHVzZXMgYW5kIHJl
bW92ZXMgbV9kYXRhRm9yVGFzay4gVGhlIG1haW4gdGhyZWFkIG1heSByZW1vdmUKKyAgICAgICAg
Ly8gbV9kYXRhRm9yVGFzayBpZiB0aGUgdGFzayB0aHJlYWQgY291bGQgbm90IHJlbW92ZSBtX2Rh
dGFGb3JUYXNrLgorICAgICAgICAvLworICAgICAgICAvLyBQYXJhbGxlbCBpbWFnZSBkZWNvZGVy
cyBtYW5hZ2UgbV9kYXRhRm9yVGFzayBpbiBhIHRocmVhZC1zYWZlIHdheS4gSG93ZXZlciwKKyAg
ICAgICAgLy8gd2UgY2FuJ3QgdGVsbCB0aGUgdmVyaWZpZXIgdGhhdCB3ZSBhcmUgc2FmZSBieSBz
aW1wbHkgcGFzc2luZyBhIG11dGV4CisgICAgICAgIC8vIGJlY2F1c2UgbGliZGlzcGF0Y2ggZG9l
cyBub3QgZXZlbiBndWFyYW50ZWUgZGVjb2RlVGFzayBpcyBjYWxsZWQgYnkgdGhlIHNhbWUgdGhy
ZWFkCisgICAgICAgIC8vIGVhY2ggdGltZS4gU28gdHVybiBvZmYgdGhlIHZlcmlmaWVyIGhlcmUu
CisgICAgICAgIG1fZGF0YUZvclRhc2stPnR1cm5PZmZWZXJpZmllcigpOworI2VuZGlmCisgICAg
fQorICAgIG1fZGF0YUZvclRhc2stPmFwcGVuZChzZWdtZW50LT5tX3NlZ21lbnQpOworICAgIG1f
aW1hZ2VEZWNvZGVyLT5zZXREYXRhKG1fZGF0YUZvclRhc2suZ2V0KCksIHNlZ21lbnQtPm1faXNB
bGxEYXRhUmVjZWl2ZWQpOworCisgICAgSW1hZ2VGcmFtZSogb2xkQnVmZmVyID0gbV9pbWFnZURl
Y29kZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICBpbnQgbGFzdERlY29k
ZWRSb3cgPSBvbGRCdWZmZXIgPyBvbGRCdWZmZXItPmxhc3REZWNvZGVkUm93KCkgOiAwOworCisg
ICAgLy8gMi4gRGVjb2RlIGFuIGltYWdlIGluY3JlbWVudGFsbHkuCisgICAgSW1hZ2VGcmFtZSog
YnVmZmVyID0gbV9pbWFnZURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAo
IWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsK
KyAgICAgICAgQVNTRVJUKCFzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIDMuIE1ha2UgYSBQYXJhbGxlbEZyYW1lRGF0YSBpbiBv
cmRlciB0byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICBQYXJhbGxlbEZyYW1lRGF0
YSogcGFyYWxsZWxGcmFtZURhdGEgPSBuZXcgUGFyYWxsZWxGcmFtZURhdGEodGhpcyk7CisgICAg
cGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzID0gYnVmZmVyLT5zdGF0dXMoKTsKKyAgICBwYXJh
bGxlbEZyYW1lRGF0YS0+bV9oYXNBbHBoYSA9IGJ1ZmZlci0+aGFzQWxwaGEoKTsKKyAgICBwYXJh
bGxlbEZyYW1lRGF0YS0+bV9wcmVtdWx0aXBseUFscGhhID0gYnVmZmVyLT5wcmVtdWx0aXBseUFs
cGhhKCk7CisKKyAgICBpbnQgbmV3TGFzdERlY29kZWRSb3cgPSBidWZmZXItPmxhc3REZWNvZGVk
Um93KCk7CisgICAgLy8gT25seSBpbiBCTVAsIGxhc3REZWNvZGVkUm93IGNhbiBiZSBiaWdnZXIg
dGhhbiBuZXdMYXN0RGVjb2RlZFJvdy4KKyAgICBpbnQgbGFzdERlY29kZWRNaW5Sb3cgPSBzdGQ6
Om1pbihsYXN0RGVjb2RlZFJvdywgbmV3TGFzdERlY29kZWRSb3cpOworICAgIGludCBsYXN0RGVj
b2RlZE1heFJvdyA9IHN0ZDo6bWF4KGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7
CisgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFJlY3QgPSBJbnRSZWN0KDAsIGxhc3RE
ZWNvZGVkTWluUm93LCBtX2ltYWdlRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGxhc3REZWNvZGVk
TWF4Um93IC0gbGFzdERlY29kZWRNaW5Sb3cgKyAxKTsKKworICAgIC8vIDQuIENyZWF0ZSBkZWNv
ZGVkIHNlZ21lbnQgZGF0YSBpbiBvcmRlciB0byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4K
KyAgICAvLyAgICBJZiB0aGUgc3RhdHVzIGlzIEZyYW1lQ29tcGxldGUsIHRoaXMgaXMgbm90IG5l
ZWRlZCBiZWNhdXNlIGEgTmF0aXZlSW1hZ2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZSBkZWNv
ZGVyIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fc3Rh
dHVzID09IEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCkgeworICAgICAgICBpbnQgc2VnbWVudFNp
emUgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAg
ICAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2VnbWVudCA9IGFkb3B0QXJyYXlQdHIo
bmV3IEltYWdlRnJhbWU6OlBpeGVsRGF0YVtzZWdtZW50U2l6ZV0pOworCisgICAgICAgIEltYWdl
RnJhbWU6OlBpeGVsRGF0YSogc2VnbWVudEFkZHIgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNv
ZGVkU2VnbWVudC5nZXQoKTsKKyAgICAgICAgbWVtY3B5KHNlZ21lbnRBZGRyLCBidWZmZXItPmdl
dEFkZHIoMCwgbGFzdERlY29kZWRNaW5Sb3cpLCBzZWdtZW50U2l6ZSAqIHNpemVvZihJbWFnZUZy
YW1lOjpQaXhlbERhdGEpKTsKKyAgICB9IGVsc2UgeyAvLyBGcmFtZUNvbXBsZXRlCisgICAgICAg
IG1faW1hZ2VEZWNvZGVyLT5zZXREYXRhKDAsIGZhbHNlKTsKKyAgICAgICAgbV9kYXRhRm9yVGFz
ay5jbGVhcigpOworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZChkaWREZWNvZGVU
YXNrQ2FsbGJhY2ssIHBhcmFsbGVsRnJhbWVEYXRhKSk7Cit9CisKK3ZvaWQgZGlkRGVjb2RlVGFz
a0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIElmIGEgY2xpZW50IGNhbGxlZCBQYXJhbGxl
bEltYWdlRGVjb2Rlcjo6Y2xlYXIoKSwgUGFyYWxsZWxJbWFnZURlY29kZXIgaXMgaW52YWxpZGF0
ZWQuCisgICAgaWYgKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3BhcmFsbGVsRGVjb2Rlci0+dmFsaWQo
KSkKKyAgICAgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT5kaWREZWNv
ZGVUYXNrKHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBkZWxldGUgcGFyYWxsZWxGcmFtZURhdGE7
Cit9CisKK0ltYWdlRnJhbWVEYXRhIGNyZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVE
YXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1l
RGF0YTsKKyAgICBpbWFnZUZyYW1lRGF0YS5tX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb247CisgICAgaW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlID0gcGFyYWxsZWxGcmFt
ZURhdGEtPm1fc3RhdHVzID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgaW1hZ2VG
cmFtZURhdGEubV9oYXNBbHBoYSA9ICFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgfHwgcGFy
YWxsZWxGcmFtZURhdGEtPm1faGFzQWxwaGE7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOwor
fQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkaWREZWNvZGVUYXNrKFBhcmFsbGVsRnJh
bWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgIT0gSW1hZ2VGcmFtZTo6
RnJhbWVFbXB0eSk7CisKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0
ZUltYWdlRnJhbWVEYXRhKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGlmICghaW1hZ2VGcmFt
ZURhdGEubV9pc0NvbXBsZXRlKQorICAgICAgICBkaWREZWNvZGVQYXJ0aWFsKGltYWdlRnJhbWVE
YXRhLCBwYXJhbGxlbEZyYW1lRGF0YSk7CisgICAgZWxzZQorICAgICAgICBkaWREZWNvZGVDb21w
bGV0ZShpbWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRp
ZERlY29kZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhLCBQYXJhbGxlbEZy
YW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRh
KTsKKyAgICBzeW5jSW1hZ2VGcmFtZShwYXJhbGxlbEZyYW1lRGF0YSk7CisKKyAgICBpbWFnZUZy
YW1lRGF0YS5tX2ZyYW1lID0gbV9pbWFnZUZyYW1lLmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBt
X29ic2VydmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit2b2lkIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyOjphcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1l
RGF0YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgY29uc3QgSW1hZ2VGcmFtZTo6UGl4ZWxE
YXRhKiBjb25zdCBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdt
ZW50LmdldCgpOworICAgIGludCBzZWdtZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2Rl
Y29kZWRSZWN0LnNpemUoKS5hcmVhKCk7CisgICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0
QWRkciA9IG1faW1hZ2VGcmFtZS5nZXRBZGRyKDAsIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29k
ZWRSZWN0LnkoKSk7CisgICAgbWVtY3B5KGRlc3RBZGRyLCBzZWdtZW50QWRkciwgc2VnbWVudFNp
emUgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJ
bWFnZURlY29kZXI6OnN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZy
YW1lRGF0YSkKK3sKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSBuZWVkZWQgdG8gY3Jl
YXRlIGEgdmFsaWQgbmF0aXZlIGltYWdlIGluIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2Uo
KS4KKyAgICBtX2ltYWdlRnJhbWUuc2V0U3RhdHVzKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1
cyk7CisgICAgbV9pbWFnZUZyYW1lLnNldEhhc0FscGhhKHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hh
c0FscGhhKTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShwYXJhbGxlbEZy
YW1lRGF0YS0+bV9wcmVtdWx0aXBseUFscGhhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6ZGlkRGVjb2RlQ29tcGxldGUoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2RlY29kZVdvcmtlci0+aW52
YWxpZGF0ZSgpOworICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgLy8gVGhlIG1haW4g
dGhyZWFkIGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0aHJlYWRzIGRvIG5v
dCBhY2Nlc3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisgICAgSW1hZ2VGcmFt
ZSogYnVmZmVyID0gbV9pbWFnZURlY29kZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUo
KTsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKworICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBi
dWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2VydmVyLT5kaWREZWNvZGUoaW1h
Z2VGcmFtZURhdGEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmYwYTM4YWI3
ODMwYmU0N2ZiZjAxOWY3NzAyZmQwMzJkNTc4ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApAQCAtMCww
ICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVjb2Rlcl9o
CisjZGVmaW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkltYWdlRGVjb2Rl
V29ya2VyLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiUGFyYWxsZWxJ
bWFnZURlY29kZXJPYnNlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZUZyYW1lRGF0YTsKK2NsYXNzIFBhcmFs
bGVsRnJhbWVEYXRhOworCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxQYXJhbGxlbEltYWdlRGVjb2Rlcj4geworcHVibGljOgorICAgIFBh
cmFsbGVsSW1hZ2VEZWNvZGVyKFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIqLCBJbWFnZURl
Y29kZXIqKTsKKyAgICB+UGFyYWxsZWxJbWFnZURlY29kZXIoKTsKKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOworCisgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsKKworICAgIHZvaWQgZGVjb2RlKCk7CisKKyAgICBpbmxpbmUgU3RyaW5nIGZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZUV4dGVuc2lvbjsgfQorICAg
IGlubGluZSBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworcHJpdmF0
ZToKKyAgICB2b2lkIGluaXRpYWxpemUoSW1hZ2VEZWNvZGVyKik7CisKKyAgICBpbmxpbmUgYm9v
bCB2YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZWNvZGVyOyB9CisKKyAgICBzdHJ1Y3Qg
RW5jb2RlZERhdGFTZWdtZW50IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5jb2Rl
ZERhdGFTZWdtZW50KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVi
bGljOgorICAgICAgICBFbmNvZGVkRGF0YVNlZ21lbnQoKSB7IH0KKyAgICAgICAgVmVjdG9yPGNo
YXI+IG1fc2VnbWVudDsKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOworICAgIH07
CisKKyAgICBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gZXh0cmFjdFNlZ21lbnRGb3JU
YXNrKCk7CisKKyAgICAvLyBPbmx5IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdGFzayB0
aHJlYWQuCisgICAgdm9pZCBkZWNvZGVUYXNrKFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50
Pik7CisKKyAgICB2b2lkIGRpZERlY29kZVRhc2soUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2
b2lkIGRpZERlY29kZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmLCBQYXJhbGxlbEZyYW1lRGF0YSop
OworICAgIHZvaWQgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURh
dGEqKTsKKyAgICB2b2lkIHN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKik7CisgICAg
dm9pZCBkaWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYpOworICAgIGZyaWVuZCB2b2lk
IGRpZERlY29kZVRhc2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworCisgICAgUGFyYWxs
ZWxJbWFnZURlY29kZXJPYnNlcnZlciogbV9vYnNlcnZlcjsKKworICAgIEludFNpemUgbV9zaXpl
OworICAgIFN0cmluZyBtX2ZpbGVuYW1lRXh0ZW5zaW9uOworCisgICAgLy8gRm9yIGlucHV0IGRh
dGEKKyAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIGludCBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7CisKKyAgICAvLyBGb3Ig
b3V0cHV0IGRhdGEKKyAgICBJbWFnZUZyYW1lIG1faW1hZ2VGcmFtZTsKKworICAgIC8vIFRoZSB0
YXNrIHRocmVhZCBjYW4gYWNjZXNzIG9ubHkgbV9kYXRhRm9yVGFzayBhbmQgbV9pbWFnZURlY29k
ZXIuCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhRm9yVGFzazsKKworICAgIEltYWdl
RGVjb2RlciogbV9pbWFnZURlY29kZXI7CisKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+
IG1fZGVjb2RlV29ya2VyOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXJPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhN2UxOTcwNWUxZTI5
YzVmMzlhZGJkY2JlOTc3NzhhMTgxZDhlNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGFyYWxsZWxJbWFnZURlY29k
ZXJPYnNlcnZlcl9oCisjZGVmaW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXJfaAorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworCisvLyBJbnRlcmZh
Y2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBkZWNvZGluZyBjb21wbGV0aW9uIG9mIGFuIFBhcmFs
bGVsSW1hZ2VEZWNvZGVyLgorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBhcmFsbGVsSW1hZ2VEZWNvZGVyT2Jz
ZXJ2ZXIoKSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDliYWI2NjU1N2UxZjcxNDI4NzEwZDM1ZTg1OGY1OTNiZThkZGRiYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9k
ZUJpdG1hcEltYWdlLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgorCisj
aW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3Jl
YXRlKEJpdG1hcEltYWdlKiBiaXRtYXBJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKGJpdG1hcEltYWdlKSk7Cit9CisKK1JldGFpbmVkTW9k
ZUJpdG1hcEltYWdlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSogYml0bWFw
SW1hZ2UpCisgICAgOiBtX2JpdG1hcEltYWdlKGJpdG1hcEltYWdlKQorICAgICwgbV9yZXRhaW5l
ZE1vZGVDb3VudCgwKQoreworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNT
aW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0
YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCk7Cit9CisKK0ludFNpemUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6
OnNpemUoKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVy
KHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zaXplKCk7Cit9CisKK2Jvb2wgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIHBvaW50KSBjb25zdAor
eworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJl
dHVybiBtX2JpdG1hcEltYWdlLT5nZXRIb3RTcG90KHBvaW50KTsKK30KKworYm9vbCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJu
IG1fYml0bWFwSW1hZ2UtPmRhdGFDaGFuZ2VkKGFsbERhdGFSZWNlaXZlZCk7Cit9CisKK1N0cmlu
ZyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAorewor
ICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVy
biBtX2JpdG1hcEltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOworfQorCit2b2lkIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQorewor
ICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0
bWFwSW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YShkZXN0cm95QWxsKTsKK30KKwordW5zaWduZWQg
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRTaXplKCkgY29uc3QKK3sKKyAgICBSZXRh
aW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRt
YXBJbWFnZS0+ZGVjb2RlZFNpemUoKTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZTo6c3RhcnRBbmltYXRpb24oYm9vbCBjYXRjaFVwSWZOZWNlc3NhcnkpCit7CisgICAgUmV0YWlu
ZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+
c3RhcnRBbmltYXRpb24oY2F0Y2hVcElmTmVjZXNzYXJ5KTsKK30KKwordm9pZCBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZTo6c3RvcEFuaW1hdGlvbigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIg
cmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RvcEFuaW1hdGlv
bigpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigp
Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAg
bV9iaXRtYXBJbWFnZS0+cmVzZXRBbmltYXRpb24oKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAg
ICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4g
bV9iaXRtYXBJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKworYm9vbCBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoKQoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2Jp
dG1hcEltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworfQorCitib29sIFJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkKK3sKKyAgICBSZXRhaW5lZE1v
ZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFn
ZS0+Y3VycmVudEZyYW1lSXNDb21wbGV0ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRh
aW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5kcmF3KGNvbnRleHQsIGRz
dFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworfQorCitib29sIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3IoKQoreworICAgIFJldGFpbmVk
TW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcElt
YWdlLT5tYXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsKK30KKworQ29sb3IgUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJl
dGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zb2xpZENv
bG9yKCk7Cit9CisKK1JldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZlcihjb25zdCBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogaW1hZ2UsIGJvb2wgcmV0YWluZWQpCisgICAgOiBtX2lt
YWdlKGltYWdlKQorICAgICwgbV9yZXRhaW5lZChyZXRhaW5lZCkKK3sKKyAgICBpZiAobV9yZXRh
aW5lZCkKKyAgICAgICAgbV9pbWFnZS0+YmVnaW5SZXRhaW5lZE1vZGUoKTsKK30KKworUmV0YWlu
ZWRNb2RlU2F2ZXI6On5SZXRhaW5lZE1vZGVTYXZlcigpCit7CisgICAgaWYgKG1fcmV0YWluZWQp
CisgICAgICAgIG1faW1hZ2UtPmVuZFJldGFpbmVkTW9kZSgpOworfQorCitSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSogaW1hZ2UpCit7Cisg
ICAgQVNTRVJUKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpOworCisgICAgQml0bWFwSW1hZ2UqIGJp
dG1hcEltYWdlID0gc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSk7CisgICAgaWYgKCFi
aXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQoKSkKKyAgICAgICAgYml0bWFwSW1h
Z2UtPm1fcmV0YWluZWRNb2RlSW1hZ2UgPSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRl
KGJpdG1hcEltYWdlKTsKKworICAgIHJldHVybiBiaXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJ
bWFnZS5nZXQoKTsKK30KKworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3Np
YmxlKEltYWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzQml0bWFwSW1h
Z2UoKSkKKyAgICAgICAgcmV0dXJuIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2UpOwor
ICAgIHJldHVybiBpbWFnZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzNlN2E4YzM4NTU3MzBjZTljOTlhZTE5ZjEzODA5ZGFmY2Y4NTdlNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcElt
YWdlLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFu
eSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlX2gKKyNkZWZpbmUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorCisj
aW5jbHVkZSAiSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJ
bWFnZTsKK2NsYXNzIFJldGFpbmVkTW9kZVNhdmVyOworCitjbGFzcyBSZXRhaW5lZE1vZGVCaXRt
YXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgZnJpZW5kIGNsYXNzIFJldGFpbmVkTW9kZVNh
dmVyOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlPiBjcmVhdGUoQml0bWFwSW1hZ2UqKTsKKworICAgIHZpcnR1YWwgflJldGFpbmVkTW9kZUJp
dG1hcEltYWdlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmln
aW4oKSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9v
bCBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBk
ZWNvZGVkU2l6ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJv
b2wgY2F0Y2hVcElmTmVjZXNzYXJ5ID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmlt
YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY3VycmVudEZyYW1lSGFzQWxwaGEoKTsKKworICAgIGJvb2wgY3VycmVudEZyYW1l
SXNDb21wbGV0ZSgpOworCisgICAgaW5saW5lIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXRhaW5lZE1vZGVDb3VudDsgfQorCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xp
ZENvbG9yKCk7CisgICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoQml0bWFwSW1hZ2UqKTsK
KworICAgIGlubGluZSB2b2lkIGJlZ2luUmV0YWluZWRNb2RlKCkgY29uc3QgeyBtX3JldGFpbmVk
TW9kZUNvdW50Kys7IH0KKyAgICBpbmxpbmUgdm9pZCBlbmRSZXRhaW5lZE1vZGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgbV9yZXRhaW5lZE1vZGVDb3VudC0tOworICAgICAgICBBU1NFUlQobV9y
ZXRhaW5lZE1vZGVDb3VudCA+PSAwKTsKKyAgICB9CisKKyAgICBCaXRtYXBJbWFnZSogbV9iaXRt
YXBJbWFnZTsKKyAgICBtdXRhYmxlIGludCBtX3JldGFpbmVkTW9kZUNvdW50OworfTsKKworY2xh
c3MgUmV0YWluZWRNb2RlU2F2ZXIgeworcHVibGljOgorICAgIFJldGFpbmVkTW9kZVNhdmVyKGNv
bnN0IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKiwgYm9vbCByZXRhaW5lZCA9IHRydWUpOworICAg
IH5SZXRhaW5lZE1vZGVTYXZlcigpOworCitwcml2YXRlOgorICAgIGNvbnN0IFJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKiBtX2ltYWdlOworICAgIGJvb2wgbV9yZXRhaW5lZDsKK307CisKKworUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsK
K0ltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTNhNTY1ZDE4NjU0MjE3MWY0MGEyNjM1MmFh
ZTgwNjk4YjgwOTRhMC4uNmY5NTc0MDc4OGZjM2U2NzYzY2YyMWZiYjRmNmY2ZDdmNDAwMzk2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCkBAIC03NjYsMTMgKzc2NiwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsK
ICAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOwotICAgICAgICBpZiAoIW5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBBU1NFUlQobmV3SW1hZ2UpOwogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0
aGUgaW1hZ2UgY2hhbmdlZDsgd2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8K
ICAgICAgICAgLy8gQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZSgpIGJlbG93IGNhbiBj
cmVhdGUgYSBuZXcgaW1hZ2UgZXZlcnkgdGltZS4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRD
b250ZW50c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0lt
YWdlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoIW1fdW5jb3JyZWN0ZWRD
b250ZW50c0ltYWdlIHx8IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpICE9IG5ld0lt
YWdlKTsKICAgICAgICAgCiAgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3
SW1hZ2U7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKaW5kZXggZGM2YTRkNGJjYjcyYzZhZTczNGZlNzM5YThjNGNlN2Q1NjQx
NWY0Ny4uZDA2YjFmNzdiZmRhNTkzNGJlZDc2Y2UxOTI5NzBhMmM0YzI4MTIxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAg
ICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkK
IHsKICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgp
OwogICAgIGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRleCAyNTQyY2Y4ZmE5MWQwYjhh
NzE0Mzg1YTRlMzAyMzk2NzgzZDk2MWRkLi5iNzQyNWE5ZTgxNmZiM2JlZWRiMzJlMDA3ZDdkMmI4
ZDMxNTEyZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMTY1LDcg
KzE2NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1h
Z2UsIHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkCiAgICAgICAgIGRlY29kZXIuc2V0RGF0
YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1h
Z2VJbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAg
ICBJbWFnZUZyYW1lRGF0YSBpbWFnZUltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJh
bWVBdEluZGV4KDApOwogICAgICAgICBpZiAoIWltYWdlSW1hZ2VGcmFtZURhdGEubV9pc0NvbXBs
ZXRlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBPd25QdHI8TmF0aXZlSW1h
Z2VDYWlybz4gbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihpbWFnZUltYWdlRnJhbWVEYXRhLm1fZnJh
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA3ODBiYTQ0ZDg0MWE2MDA5OTM5ODhkYTIz
MTQ2MzA4MjlkNDMzOTNkLi4zODdmMWVmNTJlZGU5MTM4YTQwYWRkZGM5ZjZkNTc4NzU2Yzg1MmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGRlY29kZXIu
c2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1l
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURh
dGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAg
ICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLnJlcXVlc3RGcmFtZUF0
SW5kZXgoMCk7CiAgICAgICAgIGRlY29kZWRJbWFnZS5hZG9wdENGKGltYWdlRnJhbWVEYXRhLm1f
ZnJhbWUpOwogICAgICAgICBjZ0ltYWdlID0gZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApp
bmRleCA3M2NlZTIyMDVkNWYyZDk3MWI5ZGFhYWI2MzQzNWVjZjUxOTAwYWYwLi40MDYzZGYwNTQ4
YTE3YTA2MTAwYzYwN2ZkMmM3ODI5NGQ4MWJlZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtODEsNiArODEsNyBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVl
KQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShm
YWxzZSkKIHsKICAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwog
ICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAK
aW5kZXggYjQ0NTQ5OTNiNTI4N2M1NGZmNzRiMjliMGRlMDMwNjI3NmFmYjQyNC4uZmE5YmMzZWQy
MDMwMjVjYTgwMGM5YjNhYTcwYmQ1NWIzZmYyNmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0zMDksMTEgKzMxMCwxMiBAQCBzaXplX3QgSW1h
Z2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0lt
YWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VT
b3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sKQogewogICAgIEFT
U0VSVChtX29ic2VydmVyKTsKICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNy
ZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CiAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1l
QXRJbmRleChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworICAgIHJldHVybiBpbWFnZUZyYW1lRGF0
YTsKIH0KIAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChz
aXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcAppbmRleCBjZDg3OTRlNTM5Y2ZkNTBlZTg4YTc3ZTA3
YzQ1ZjgyYWI5Y2Q3MzUzLi45MDAwZmMzZGZiNWIzMDljZGFmYWE5OTcxMjViN2I5NjM1ZWYzZmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1h
Z2VPcGVuVkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcElt
YWdlKFRpbGVkSW1hZ2VPcGVuVkcqIHRpbGVkSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
KQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNp
emUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5n
RnJhbWUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2l6ZS53aWR0aCgpID4gMCk7CiAgICAgQVNT
RVJUKG1fc2l6ZS5oZWlnaHQoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9JbWFnZVF0LmNwcAppbmRleCBlNjc1Y2Q0MmJmMzEwOTRlYWFiZWQxODEwODQw
ZTc4ZjBhMTY0MWIzLi45N2I1NjUyZjNkNDc5OTdmZGU0ZTkxMTE4M2U4MDRhOWU2YTBmNWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApA
QCAtMjE0LDYgKzIxNCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShRSW1hZ2UqIGltYWdl
LCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAs
IG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAg
ICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBpbnQgd2lkdGggPSBpbWFnZS0+d2lk
dGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gaW1hZ2UtPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHQzRFNraWEuY3BwCmluZGV4IGY1NmQ3MjQ1YWQxMGVjM2FlODViZWQ0MjcwOWU2ZjZiNDcyYjJj
NTAuLjFmMDQ1OWM1NGFjNTA1ZmM3MmJkM2NiMDg2ZWFlZTI2ODhhNWUyZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RT
a2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dDNEU2tpYS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgZGVjb2Rlci5zZXREYXRh
KGltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFn
ZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFn
ZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVxdWVzdEZyYW1lQXRJbmRleCgw
KTsKICAgICAgICAgaWYgKCFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhhID0gaW1hZ2VGcmFtZURhdGEubV9oYXNB
bHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDI4
MDI5MzNhOTk2YzUzYzM4NzEyZDRkZDcxMTg3YjNhNjU1ZDkwZjIuLjQ1Y2Y2ZGJjODg5ODQ2ZmRi
M2FjMDNkMzIwNzFkMDcyZDlmNmI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcApAQCAtMzE1LDggKzMxNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiB2YWx1ZSkKICovCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGlt
YWdlKQogewotICAgIGlmIChpbWFnZSA9PSBtX2ltYWdlKQotICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKGltYWdlICE9IG1faW1hZ2UpOwogCiAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIGlm
IChtX2ltYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93eC9JbWFnZVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0lt
YWdlV3guY3BwCmluZGV4IGI3YzI0OTZjNzNiNTI2NWYxZDg1MzRlMzM3ZWU4YzIwZmUzMDI5ODku
LmI0YjU3YmU5YmEzNDMwNWQzNDlmYmY0YzRlNWI0NzY3NWZiODMxNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCkBAIC05NSw2ICs5NSw3
IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCB3eEJpdG1hcCYgYml0bWFwKQogICAg
ICwgbV9kZWNvZGVkU2l6ZSgwKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogICAgICwg
bV9mcmFtZUNvdW50KDEpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIG1f
ZGVjb2RlZFNpemUgPSBiaXRtYXAuR2V0V2lkdGgoKSAqIGJpdG1hcC5HZXRIZWlnaHQoKSAqIDQ7
CiAgICAgbV9zaXplID0gSW50U2l6ZShiaXRtYXAuR2V0V2lkdGgoKSwgYml0bWFwLkdldEhlaWdo
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDcyYjVkZGMyZGUzMWQwMDQwNzI3ZDQ0ZTk1MTYyYWRm
NmJhYzc2YzcuLjkwNGY4NjY4NjMzMmRhOGMzMjZkZDBmNmViNTdiYjQ1NTY3NzVkOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMTQwLDYgKzE0MCw3IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVy
OjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAK
IEltYWdlRnJhbWU6OkltYWdlRnJhbWUoKQogICAgIDogbV9oYXNBbHBoYShmYWxzZSkKKyAgICAs
IG1fbGFzdERlY29kZWRSb3coMCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBt
X2R1cmF0aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQp
CkBAIC0xNjUsNiArMTY2LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7
CiAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX2J5dGVzID0gMDsKKyAgICBtX2xh
c3REZWNvZGVkUm93ID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAgLy8gTk9U
RTogRG8gbm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KCkgY2FsbHMgdGhpcwogICAgIC8vIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQgb3RoZXIg
ZnVuY3Rpb25zIGxpa2UgaW5pdEZyYW1lQnVmZmVyKCkgYW5kCkBAIC0xODcsNiArMTg5LDcgQEAg
Ym9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikK
ICAgICBtX2J5dGVzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOwogICAgIG1fc2l6ZSA9IG90aGVy
Lm1fc2l6ZTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKKyAgICBtX2xhc3RE
ZWNvZGVkUm93ID0gb3RoZXIubV9sYXN0RGVjb2RlZFJvdzsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMTk5LDYgKzIwMiw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lk
dGgsIGludCBuZXdIZWlnaHQpCiAgICAgbV9iYWNraW5nU3RvcmUucmVzaXplKGJhY2tpbmdTdG9y
ZVNpemUpOwogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXpl
ID0gSW50U2l6ZShuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0g
MDsKIAogICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CmluZGV4IDkxMTg3OGUxZDk2MjIyNjQ3ZTdmMzQ3ZTc2NjJkMmZiZWYzZjAyOGIuLjI3MDNlNDg4
YjhlNjhhNmU5NmNkY2I1YWIyZTk1NmU3YTU1YWRlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTgsNiAr
MTE4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05l
d05hdGl2ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0Owor
ICAgICAgICBpbnQgbGFzdERlY29kZWRSb3coKSBjb25zdCB7IHJldHVybiBtX2xhc3REZWNvZGVk
Um93OyB9CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0
dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KQEAgLTEyNSw2ICsxMjYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEo
Ym9vbCBhbHBoYSk7CisgICAgICAgIGlubGluZSB2b2lkIHNldExhc3REZWNvZGVkUm93KGludCBs
YXN0RGVjb2RlZFJvdykgeyBtX2xhc3REZWNvZGVkUm93ID0gbGFzdERlY29kZWRSb3c7IH0KICAg
ICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJik7CiAgICAgICAg
IHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFs
RnJhbWVSZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0
dXMpOwpAQCAtMTgxLDYgKzE4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KICAgICAgICAgQ29sb3JQ
cm9maWxlIG1fY29sb3JQcm9maWxlOwogI2VuZGlmCisgICAgICAgIGludCBtX2xhc3REZWNvZGVk
Um93OwogICAgICAgICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBh
bHdheXMganVzdCBiZSB0aGUgZW50aXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhh
biB0aGUKQEAgLTIyOCw2ICsyMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKKyAg
ICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9
CisKICAgICAgICAgLy8gTGF6aWx5LWRlY29kZXMgZW5vdWdoIG9mIHRoZSBpbWFnZSB0byBnZXQg
dGhlIHNpemUgKGlmIHBvc3NpYmxlKS4KICAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB0aGF0
IGhhcyB0byBiZSBkb25lIGJ5IGVhY2ggc3ViY2xhc3M7IGZhY3RvciB0aGUKICAgICAgICAgLy8g
ZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KQEAgLTI3Niw2ICsyODEsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4K
ICAgICAgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9
IDA7CiAKKyAgICAgICAgLy8gUmV0dXJucyBhbiBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlciB3
aXRob3V0IGRlY29kaW5nIG1vcmUuCisgICAgICAgIEltYWdlRnJhbWUqIGZpcnN0SW1hZ2VGcmFt
ZVdpdGhvdXREZWNvZGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9mcmFtZUJ1
ZmZlckNhY2hlLmlzRW1wdHkoKSA/IDAgOiAmbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOworICAgICAg
ICB9CisKICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZs
YWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9v
bCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURl
Y29kZXIuY3BwCmluZGV4IDZhNjVlNjE3ZDE5ZTY3YmZhMjE4MDUzODdjMTE5NWRhNDgyMWRiNmQu
LmJkY2FlZjA1ZWE0MDExNWQwNmNmNzM1ZjA5MTlhYWM0YjIxOWVlZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTU3LDYgKzE1Nyw3IEBAIGludCBJ
bWFnZVJlYWRlcjo6ZGVjb2RlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgSW1hZ2VGcmFt
ZSogYUZyYW1lKQogICAgICAgICAgICAgYUZyYW1lLT5zZXRSR0JBKGksIGosIGN1clB0clswXSwg
Y3VyUHRyWzFdLCBjdXJQdHJbMl0sIDI1NSk7CiAgICAgICAgICAgICBjdXJQdHIgKz0gMzsKICAg
ICAgICAgfQorICAgICAgICBhRnJhbWUtPnNldExhc3REZWNvZGVkUm93KGopOwogICAgIH0KICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjBhMjQ4Yzdk
M2JjYjExY2FkN2M2NzY5NWViODI3NTc1Mjc4MjQ5My4uZjc0ZGRlM2EwZGZmYWFiNzliMDVhYjQz
OGJkMWZmOGZlYTJjMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTY0LDgg
KzY0LDE1IEBAIHZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVB
dmFpbGFibGUoKQogewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkK
KyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgLy8g
T25seSBCTVBJbWFnZURlY29kZXIgbXVzdCBtYWtlIG1fZnJhbWVCdWZmZXJDYWNoZVswXSBpbiBp
c1NpemVBdmFpbGFibGUoKSwKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBv
ZiBJbWFnZUZyYW1lOjptX2xhc3REZWNvZGVkUm93IGNhbiBiZSAiaGVpZ2h0IC0gMSIuCisgICAg
ICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2Zy
YW1lQnVmZmVyQ2FjaGUucmVzaXplKDEpOworICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hl
LmZpcnN0KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOworICAgICAg
ICB9CiAgICAgICAgIGRlY29kZSh0cnVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gSW1hZ2VEZWNv
ZGVyOjppc1NpemVBdmFpbGFibGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCmluZGV4
IDVjMDA1NTM0ZWNkOTIxMzRhMTNiMzI5NTg5Mjc3OTBmMDdhZDBmODEuLjRmN2UzMTc5ZTY2NjMz
OGEzYTExNGIxYjIyYTFlMzQ5NDgzOTQ1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcApA
QCAtNjQsOCArNjQsMTEgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25s
eVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHByb2Nlc3NJbmZvSGVhZGVy
KCkgc2V0IHRoZSBzaXplLCBzbyBpZiB0aGF0J3MgYWxsIHdlIG5lZWRlZCwgd2UncmUgZG9uZS4K
LSAgICBpZiAob25seVNpemUpCisgICAgaWYgKG9ubHlTaXplKSB7CisgICAgICAgIGlmICghbV9p
c1RvcERvd24pCisgICAgICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9wYXJl
bnQtPnNpemUoKS5oZWlnaHQoKSAtIDEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAK
ICAgICAvLyBSZWFkIGFuZCBwcm9jZXNzIHRoZSBiaXRtYXNrcywgaWYgbmVlZGVkLgogICAgIGlm
IChtX25lZWRUb1Byb2Nlc3NCaXRtYXNrcyAmJiAhcHJvY2Vzc0JpdG1hc2tzKCkpCkBAIC02MjQs
NiArNjI3LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc1JMRURhdGEoKQogCiAgICAg
ICAgICAgICAgICAgbV9kZWNvZGVkT2Zmc2V0ICs9IDI7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBtX2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9jb29yZC55KCkpOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtNzE3LDYgKzcyMSw3IEBAIEJNUEltYWdlUmVhZGVyOjpQcm9jZXNzaW5n
UmVzdWx0IEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YShib29sIGluUkxFLCBpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBnZXRDb21wb25lbnQocGl4ZWwsIDIpLCBhbHBoYSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXItPnNldExhc3REZWNvZGVk
Um93KG1fY29vcmQueSgpKTsKIAogICAgICAgICAvLyBTdWNjZXNzLCBrZWVwIGdvaW5nLgogICAg
ICAgICBtX2RlY29kZWRPZmZzZXQgKz0gcGFkZGVkTnVtQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCmluZGV4IDVmNjE5M2I4ZjllMWJhOTM3YjZlM2ZjNzMxNzQ5MjQzNGRhYWUyZGEu
LjcxOThhMTFjMWYxNTY4MDBjN2FiYjFmZmVhNDAxYjJjNzU5MDg1YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxNCBAQCBib29sIEdJRkltYWdlRGVjb2Rl
cjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93
QnVmZgogICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHlCZWdpbiwgMCwgMCwgMCwg
MCk7CiAgICAgICAgIH0KICAgICB9CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHlCZWdp
bik7CiAKICAgICAvLyBUZWxsIHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cgZGF0YSBpZiBuZWVk
IGJlLgotICAgIGlmIChyZXBlYXRDb3VudCA+IDEpCisgICAgaWYgKHJlcGVhdENvdW50ID4gMSkg
ewogICAgICAgICBidWZmZXIuY29weVJvd05UaW1lcyh4QmVnaW4sIHhFbmQsIHlCZWdpbiwgeUVu
ZCk7CisgICAgICAgIEFTU0VSVCgoeUVuZCAtIDEpID49IDApOworICAgICAgICBidWZmZXIuc2V0
TGFzdERlY29kZWRSb3coeUVuZCAtIDEpOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMzkwLDYgKzM5NCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIo
dW5zaWduZWQgZnJhbWVJbmRleCkKICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IHByZXZSZWN0
LnkoKTsgeSA8IHByZXZSZWN0Lm1heFkoKTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgICBmb3Ig
KGludCB4ID0gcHJldlJlY3QueCgpOyB4IDwgcHJldlJlY3QubWF4WCgpOyArK3gpCiAgICAgICAg
ICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRSR0JBKHgsIHksIDAsIDAsIDAsIDApOworICAgICAg
ICAgICAgICAgICAgYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICBpZiAoKHByZXZSZWN0LndpZHRoKCkgPiAwKSAmJiAocHJldlJlY3Qu
aGVpZ2h0KCkgPiAwKSkKICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0SGFzQWxwaGEodHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5MWYxMjM2YjM1OWJjMTU1
YWYzN2M3ZmUyY2UzNmVhNzNjNTA5NDk2Li40ODYxY2I2NjcyMzk3OGNiZGIzNzc4ZTBiMzc4MTk4
ZWViOWIwNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU3Nyw2ICs1
NzcsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgaWYg
KHR1cmJvU3dpenpsZWQoaW5mby0+b3V0X2NvbG9yX3NwYWNlKSkgewogICAgICAgICBBU1NFUlQo
IW1fc2NhbGVkKTsKICAgICAgICAgd2hpbGUgKGluZm8tPm91dHB1dF9zY2FubGluZSA8IGluZm8t
Pm91dHB1dF9oZWlnaHQpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhp
bmZvLT5vdXRwdXRfc2NhbmxpbmUpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogcm93ID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyLmdldEFkZHIoMCwgaW5mby0+
b3V0cHV0X3NjYW5saW5lKSk7CiAgICAgICAgICAgICBpZiAoanBlZ19yZWFkX3NjYW5saW5lcyhp
bmZvLCAmcm93LCAxKSAhPSAxKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYy
OCw2ICs2MjksNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhkZXN0WSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDEzOGQ1YzUx
MjkxZWEyNmY2OTY0M2Y2YWE0NDg4NGJiNWM2NDgwZWYuLjgxMGNhYTcyMDgyMTlmZmY2Y2Y2Mjk3
NGU4ZWY3ZWYxYjM0NTFiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01MjAs
NiArNTIwLDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBj
aGFyKiByb3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogCiAgICAgaWYgKG5vblRyaXZpYWxB
bHBoYSAmJiAhYnVmZmVyLmhhc0FscGhhKCkpCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShu
b25Ucml2aWFsQWxwaGEpOworICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKIH0KIAog
dm9pZCBQTkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2Rl
clNraWEuY3BwCmluZGV4IDVjYzEzMmM0ZDQ4NDAwYjgxNTJlZTVmNGZlZjIyNDJjNDI5ZGI2YjYu
LjEzMzE4YTM4NDZmZjVhZWJkOTMwMmFkMzJlMTUzMjNkZDg3MzhjYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tp
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9J
bWFnZURlY29kZXJTa2lhLmNwcApAQCAtNTcsNiArNTcsNyBAQCBJbWFnZUZyYW1lJiBJbWFnZUZy
YW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiB2b2lkIEltYWdlRnJhbWU6
OmNsZWFyUGl4ZWxEYXRhKCkKIHsKICAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAg
IG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAv
LyBOT1RFOiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoKQogICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBv
dGhlciBmdW5jdGlvbnMgbGlrZQpAQCAtNzYsNiArNzcsNyBAQCBib29sIEltYWdlRnJhbWU6OmNv
cHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogCiAgICAgbV9iaXRtYXAuYml0
bWFwKCkucmVzZXQoKTsKICAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFwID0g
b3RoZXIubV9iaXRtYXA7CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IG90aGVyLm1fbGFzdERlY29k
ZWRSb3c7CiAgICAgcmV0dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAu
Yml0bWFwKCksIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKIH0KIApAQCAtODQsNiAr
ODYsNyBAQCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVp
Z2h0KQogICAgIC8vIHNldFNpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVh
a3MgbWVtb3J5IG90aGVyd2lzZS4KICAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsK
IAorICAgIG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENv
bmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwog
ICAgIGlmICghbV9iaXRtYXAuYml0bWFwKCkuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDgyZTMzZGRiMmEz
NjBlMzg4OGQ3OWIwM2E5YzIxY2NkYjhjMDNjMi4uYTlmOThhZDgwZjZmMTk4MDU4ZDJhZmRlYmI2
YTQwOWUyM2FlNzlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIs
MTkgKzEzMiwyNiBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXpl
KQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAo
V2ViUElVcGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0ZXMsIGRhdGFTaXplKSkgewotICAgIGNhc2Ug
VlA4X1NUQVRVU19PSzoKLSAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFt
ZUNvbXBsZXRlKTsKLSAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKLSAgICAgICAgbV9k
ZWNvZGVyID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBWUDhfU1RBVFVTX1NV
U1BFTkRFRDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6CisgICAgY29uc3Qg
VlA4U3RhdHVzQ29kZSBzdGF0dXMgPSBXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywg
ZGF0YVNpemUpOworICAgIGlmIChzdGF0dXMgIT0gVlA4X1NUQVRVU19PSyAmJiBzdGF0dXMgIT0g
VlA4X1NUQVRVU19TVVNQRU5ERUQpIHsKICAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsK
ICAgICAgICAgbV9kZWNvZGVyID0gMDsKICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAg
IH0KKyAgICBpbnQgbGFzdFkgPSAwOworICAgIGlmICghV2ViUElEZWNHZXRSR0IobV9kZWNvZGVy
LCAmbGFzdFksIDAsIDAsIDApKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgQVNT
RVJUKGxhc3RZID49IDApOworICAgIEFTU0VSVChsYXN0WSA8PSBzaXplKCkuaGVpZ2h0KCkpOwor
ICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhsYXN0WSA/IGxhc3RZIC0gMSA6IDApOworCisg
ICAgaWYgKHN0YXR1cyA9PSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsK
KyAgICBXZWJQSURlbGV0ZShtX2RlY29kZXIpOworICAgIG1fZGVjb2RlciA9IDA7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDQ4ZWEwNTQ3MGRkZjA0YmQxMDQyZDVlYjMwYzE2
YmZjZTc4ZDNiMTQuLjhlNmI5NDhlZTZlNjhkM2FmZDAzZjY3MDg3ZjJhMTAzMjI0OGVlZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzExLDcgKzMxMSw3
IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IHVzYWJs
ZVdpZHRoID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIExheW91dFVuaXQgdXNhYmxlSGVpZ2h0
ID0gY0hlaWdodCAtIDI7CiAKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2lt
YWdlUmVzb3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSB0b1JldGFp
bmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCkuZ2V0
KCkpOwogCiAgICAgICAgICAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkg
JiYgIWltYWdlLT5pc051bGwoKSAmJiB1c2FibGVXaWR0aCA+PSBpbWFnZS0+d2lkdGgoKSAmJiB1
c2FibGVIZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvcihmcmFtZSgpKTsK
QEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAg
ICAgIGlmIChjZW50ZXJZIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7CiAg
ICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBsZWZ0
UGFkICsgY2VudGVyWCArIDEsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAxKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNv
bG9yU3BhY2UoKSwgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBpbWFnZU9m
ZnNldCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFn
ZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9m
ZnNldCArIGltYWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0
dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIHJlY3QKICAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2Uo
KSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSB8fCBhbGlnbmVkUmVjdC53aWR0
aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWcgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKGFsaWduZWRS
ZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gdG9S
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFnZShh
bGlnbmVkUmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCkpOwogICAgIGlm
ICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDUwLDcgKzQ1
MCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigp
IDogQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3Vy
Y2UtPmltYWdlKCkuZ2V0KCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3Vs
ZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6
ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGln
bmVkUmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCktPmNv
bG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBzaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+
ZHJhd0ltYWdlKGltZywgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9z
aXRlT3BlcmF0b3IsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxp
dHlTY2FsaW5nKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6Ym94U2hhZG93U2hvdWxkQmVBcHBs
aWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCopIGNvbnN0CkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBSZW5kZXJJbWFn
ZTo6YmFja2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdAogCiAgICAgLy8gQ2hlY2sgZm9yIGJpdG1h
cCBpbWFnZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+
aW1hZ2UoKS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgp
IHx8IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UgfHwgIWlt
YWdlLT5pc0JpdG1hcEltYWdlKCkgfHwgdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSkt
PmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCmluZGV4IDk4ODZmYjMxOTgyMzUzZDY0MDIzZjU3NGIwMGMxNGEyMGZi
MWZjMmEuLjljMzc0ZWY0YjRjNTRkM2NjMmI0YTUyYThhNWI4NGU5ZDhmYjc3YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAKICNpbmNsdWRlICJB
bmltYXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRl
ICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNocm9tZS5oIgpAQCAtMTA3OSw4ICsxMDgwLDIxIEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKCkKICAgICBpZiAoIWNhY2hlZEltYWdl
LT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGlzIGlzIGEgbm8tb3Ag
aWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgot
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKKyAgICBpZiAo
aW1hZ2UgIT0gbV9jb21wb3NpdGVkSW1hZ2UpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byB3YWl0
IHVudGlsIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRo
ZSBsYXllci4KKyAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIXRvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2UpLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBkZWNvZGVkQml0bWFwSW1h
Z2UgPSBpbWFnZTsKKyAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpIHsKKyAgICAg
ICAgICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgICAgICAgICBkZWNvZGVkQml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKGltYWdlUHRyKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGlzIGEgbm8t
b3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdl
LgorICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShkZWNvZGVkQml0
bWFwSW1hZ2UuZ2V0KCkpOworICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IGltYWdlOworICAg
IH0KKwogICAgIHVwZGF0ZURyYXdzQ29udGVudCgpOwogICAgIAogICAgIC8vIEltYWdlIGFuaW1h
dGlvbiBpcyAibGF6eSIsIGluIHRoYXQgaXQgYXV0b21hdGljYWxseSBzdG9wcyB1bmxlc3Mgc29t
ZW9uZSBpcyBkcmF3aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgKaW5kZXggMGY0MmQzZmI5MWIxNzkzNTk3OWZkYjE4ZGJkMDZmY2E2OGZiYzg0Yy4u
MDcyODBkY2I5NTQwNGEyMTAwNDVjMmNmMDI0OTgxMTFmZWRjNzk2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMjQxLDYgKzI0MSw4IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG1fbGF5ZXJGb3JWZXJ0aWNhbFNj
cm9sbGJhcjsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9sYXllckZvclNjcm9sbENvcm5l
cjsKIAorICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7CisKICAgICBJbnRSZWN0
IG1fY29tcG9zaXRlZEJvdW5kczsKIAogICAgIGJvb2wgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJv
dW5kczsgICAgICAvLyBib3VuZHMgaGFkIHRvIGJlIG1hZGUgbm9uLXplcm8gdG8gbWFrZSB0cmFu
c2Zvcm0tb3JpZ2luIHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAKaW5kZXggNTZiZTVjZDQxNmJjZGUyNmUwYTg1NWJlMWFkY2VhMmI0M2Zj
MGI5NS4uYTE5NmU3NWY4YTlkZjFhMjhkYzZlN2JhOTA1NGU5NmYxNTUxNTM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIK
KyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8uaCIKQEAgLTEyNywxNCArMTI4LDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAg
ICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQodGhpcywgY2hpbGRQYWlu
dEluZm8pOwogCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1By
ZXBhcmVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9pbWFn
ZVJlc291cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IHRvUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5n
ZXQoKSk7CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9vYmplY3RCb3Vu
ZGluZ0JveDsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+
d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAgICAgICAgIFNWR0ltYWdlRWxl
bWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgp
KTsKICAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50
cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAgICAgICAgIGNoaWxk
UGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZv
LmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHNyY1JlY3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKaW5kZXggM2JhZWEyN2M5ZjU1NDgzYWYwNThhYWZiNjE4
MTA3MmUyNDRhMDZkMC4uY2RlMTM5ZmNlY2FlNTgzOGYzNjI1ZjljODc5OTBhMzc3MjEwOTQ2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNv
bnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1hZ2VG
cmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4
KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0RnJh
bWVBdEluZGV4KGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZnJhbWUoQWRvcHRD
RiwgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIFdlYkltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lh
LmNwcAppbmRleCBmYjBkZjdjYWZmY2ExZmEwYjM3ZDZlNjNhOWVlMTcwODI4ODYwNjA1Li41ZDg2
NGEyN2JhOTEwNjAwMzU5MjkxYTU3NmIyNDY0NmIwNTdlMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV2ViSW1hZ2Ug
V2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRl
c2lyZWRTaXplKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VG
cmFtZURhdGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZUZy
YW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4
KTsKICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9IGFkb3B0UHRyKGltYWdlRnJh
bWVEYXRhLm1fZnJhbWUpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJbWFn
ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154506</attachid>
            <date>2012-07-25 18:16:54 -0700</date>
            <delta_ts>2012-07-25 18:21:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120726101621.patch</filename>
            <type>text/plain</type>
            <size>96101</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkZjhmOGM4ZjgxNWE3
Yjk3NTllMzFiOWU3MmY3N2RhZmY3MTJhYi4uZjgyYjY4NTE0YzcyMzZkNWM2MjI3NjYyZmJlZTJk
NzIyNDA5ODcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxMi0wNy0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9J
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0lt
YWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpsYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpzZXRMYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAo
V2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNr
Z3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAg
ICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQp
OgorCiAyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlZmFjdG9yaW5nIG1ldGFkYXRhIG9mIEJpdG1hcEltYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZTNhZjlkNjRhZTBmNmM2OWNlMjgzYjEyN2YyZDIyMWM4
N2U1NDY0Li41ZmEzYTRkZTYxN2VkYTYxOTliNGFmYmUyMTA0MTdmNjlkOTY3NTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA3LTE3ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBwYXJhbGxl
bCBpbWFnZSBkZWNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdXRob3JlZCBieSBIdWFuZyBEb25nc3VuZyBhbmQgS3dhbmcgWXVsIFNlby4KKwor
ICAgICAgICBNYWtlIGltYWdlIGRlY29kaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQg
dGhlIG1haW4gdGhyZWFkIGNhbiBzcGVuZCBtb3JlCisgICAgICAgIHRpbWUgaW4gbG9hZGluZywg
cGFyc2luZywgc2NyaXB0aW5nIGFuZCBsYXlvdXQgd2hpbGUgaW1hZ2UgZGVjb2RpbmcgdGhyZWFk
cyBkZWNvZGUKKyAgICAgICAgaW1hZ2VzIGluIHRoZSBiYWNrZ3JvdW5kLgorCisgICAgICAgIFJl
ZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L3B1Yj9pZD0xMmdmN01oTkhm
dXBlUjNHZFJGLWgyVnpnODZ2aUNid1hxOF9KQnlIS2xnMAorICAgICAgICBmb3IgZGV0YWlsZWQg
ZXhwbGFuYXRpb24uCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKKzIwMTItMDctMTcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgUHJl
cGFyZSBmb3IgcGFyYWxsZWwgaW1hZ2UgZGVjb2Rlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MWM4ZWUzZDAzMTk5MDY5OTM3MDQ4MjM1NDYwM2FkZDI3Njg3Y2I3Ni4uMzk2MzhlYzczYjE2OGU0
MDQyZDc0NzIxYTk4OWY4Y2RiOGVmN2Q0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OTks
OSArMTc5OSwxMSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPcmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMjczMzQyZmZiMTljMWEwNWQ5MjBmYjhmMDBiMTgxY2RhMjg2MmZlZC4uNmI1N2RmNmJhNzBi
MTMxZGZlZGYyYzM5ZjNlMzRjYzlkMjgxYWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zMjMxLDYgKzMyMzEsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzYmZjYTY1YzFmMGQ3OWZlOTZmMzQ5
ZTkzODAzYzc3MGVhYjJlM2Q4Li45OTJmNDBiYzNkYmQwMDlmMDUxNWE4MDIwZDE5MzIwMjZkZGM0
YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk2OCwxMCArOTY4LDEyIEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3Qu
Y3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBcCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkUmVjdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnRE
YXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApAQCAtMjA5
MSwxMSArMjA5MywxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludEhhc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJh
bGxlbEltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdl
RGVjb2Rlck9ic2VydmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDA2OGM5NWFkMzI0ODY1YjMxYjViYTNjM2M2ZThhNGYzMmY3NmE5MmEu
LjBkNDYwNWM2M2YwMTNjZGE0NGM0ZjZkZWIxYzBiOTZmMmI3NGFjMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM1MjgsMTEgKzM1MjgsMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVj
b2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVj
b2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3ODdjNDdiMTdkMmIzZWNhN2VkMjQzNzU4YTJk
MmY4M2I4ODdiYTI1Li5kOGRlZDBhZmMwMDZiNjk5OTY1YWZmZTYwYmU3MDdmMjQ5N2Y0MjA2IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk1
NDYsNiArMjk1NDYsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXRoVHJh
dmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjk1NzQsNiArMjk1ODYs
MTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3Vu
ZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzQ2NDY4ODUzNzkxNDEyYzZh
ZTcxZmQxZTEwZjM3ZDBmMmI2MmVhNS4uNGU0NGMzNWFhZWE1NGI5ZDRiMmY2ZWVlZWVkYTU0YzEx
YzBkNzM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQyNSw2ICsxNDI1LDggQEAKIAkJNEIzMDQzQ0QwQUUwMzczQjAwQTgy
NjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4MDkzMEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNl
Q0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJj
ZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjM0
ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OworCQk1QjM0ODA5
MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzNDgwOTEwRUVGNTBENDAw
QUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsgfTsKKwkJNUIzNDgwOTQw
RUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5MjBFRUY1MEQ0MDBBQzFC
NDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJNEI2RkE2RjQwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
NkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3Bw
ICovOyB9OwpAQCAtODUzNiw2ICs4NTM4LDggQEAKIAkJNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3
IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAv
KiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjM0
ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNt
YXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydFJlcGxh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjMwQzM5RTQ4QzAwMDg3
MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZG
QTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTk2MDgsNiArMTk2MTIsOCBAQAogCQkJCUE4MEEzOEZEMEU1MEND
ODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJD
RTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0MDAy
Q0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4MDkxMEVFRjUwRDQwMEFD
MUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJCQkJNUIzNDgwOTIwRUVG
NTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggKi8sCiAJCQkJQjI3NTM1
MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovLAogCQkJ
KTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NTcwLDYgKzI0NTc2LDcgQEAKIAkJCQk3RUU2ODQ2RjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTUxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTcxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzc1NSw2ICsyNzc2Miw3IEBACiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdF
RTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9u
c2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyog
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQTQx
MkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBB
NjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0ZDRjNjE5OTEzZDFiMzQ2
OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2MGM0ODFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAt
NjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc1VuaWZvcm1G
cmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCisgICAgLCBtX2lz
Q2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5LDEyIEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBO
T1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBoZXJlLCB0aGF0IHdpbGwg
dHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGkuZS4gbmV2ZXItZGVjb2Rl
ZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFzcykgZnJhbWVzIQotICAg
ICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBsZXRl
KQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJyZW50IGZyYW1lLCBiZWNh
dXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAgICAgICAvLyBpbiByZXRh
aW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRoaXMgZGVjb2RlZCBpbWFn
ZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIHJlbW92ZWQgaGVyZSwg
dGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0ZSBib3guCisgICAgICAg
IC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHJldGFpbmVk
IG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2Zy
YW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJyZW50RnJhbWUgIT0gaSkK
ICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRydWUpID8g
MSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVzQ2xlYXJl
ZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXND
YWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwg
IW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2FjaGluZ0ZyYW1lKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4aXN0IHdoZW4gbV9pc0Nv
bXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3IGZyYW1lIGV2ZW4gaWYg
bV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCBmb3Ig
ZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4ID49IG1fZnJhbWVzLnNp
emUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2lz
Q29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAgIG1faXNDYWNoaW5nRnJh
bWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAgICAgICAgbV9pc0NhY2hp
bmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjcs
MTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkK
ICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5n
cm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4
KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4LCByZXRhaW5lZE1vZGVS
ZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCiti
b29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdAogeworICAgIHJl
dHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWluZWRNb2RlSW1hZ2UtPnJl
dGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZl
RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJh
bWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkKQorewor
ICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBpbmRpcmVjdGx5IGluIHRo
aXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKG1fcmV0
YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8vIG1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVwbGFjZWQgd2l0aCBuZXcg
ZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xlYXIgbV9mcmFtZSwgdGhl
IG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQg
Zm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0IGJlIHJlbW92ZWQgaGVy
ZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpbmRleF0uY2xlYXIo
dHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lc0NsZWFy
ZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZyYW1lRGF0YShpbWFnZUZy
YW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwpAQCAtMjg4
LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAgICAgICAvLyB0byBkZXRl
cm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRlcyAtPSBtX2RlY29kZWRQ
cm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAwOwotICAg
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKSB7
CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0aGlzLCBk
ZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBs
ZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCkKKyAgICAgICAgICAg
ICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywgSW50UmVjdChJbnRQb2lu
dCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMzA5LDcgKzM0NSwxMyBA
QCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
ICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFtZUR1cmF0aW9uQXRJbmRl
eCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKKyAgICAv
LyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29kZWQgYnkgcGFyYWxsZWwg
aW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBtX2lzQ29tcGxldGUgaXMg
dHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiBtX2ZyYW1l
c1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXND
b21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgobV9jdXJyZW50
RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2NjlhMDUxMjFiNS4uYzRk
NTZmNzVlNTI3NTVmNDA1MDRiODhkZTc3ZWJhNjllNDBiOWY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRtYXBJbWFnZSA6IHB1Ymxp
YyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBjbGFzcyBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7
CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJp
dG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0xOTIsNiArMTk1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgdmlydHVhbCBib29sIGN1
cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCk7
CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CiAgICAg
SW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwpAQCAtMjAx
LDcgKzIwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VPYnNlcnZl
cgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29uc3Qg
SW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRl
eChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZhbHNlLCBi
b29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjkzLDYgKzI5Nyw4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7CiAgICAgdmlydHVhbCBDb2xv
ciBzb2xpZENvbG9yKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJp
bmcoKSBjb25zdDsKKwogICAgIEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFibGUgSW50
U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdp
bGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFibGUgSW50
U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CkBAIC0zMTcsNiArMzIzLDggQEAgcHJv
dGVjdGVkOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1NpemU7IC8v
IFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWluZSBpbWFn
ZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNpemVfdCBt
X2ZyYW1lQ291bnQ7CiAKKyAgICBSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IG1fcmV0
YWluZWRNb2RlSW1hZ2U7CisKICAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8gV2hldGhl
ciBvciBub3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgogICAgIGJvb2wgbV9jaGVja2VkRm9y
U29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUgZm9yIHNv
bGlkIGNvbG9yLgogCkBAIC0zMjcsNiArMzM1LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9z
aXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0aGUgc2l6
ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KICAgICBtdXRhYmxl
IGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZl
RnJhbWVDb3VudCA6IDE7CisKKyAgICBib29sIG1faXNDYWNoaW5nRnJhbWUgOiAxOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CmluZGV4IDAyMDMzNGVjZmRkNTZjZWRhNDZlN2FhOWUzMjFlZWYxNTkyZDQzOTEuLjczYjU5M2Y2
NTM1MTQ3NzU4NzM3ZTk0ZDVmZDUxNzVhNThiY2MyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM1LDkgKzM1LDEzIEBACiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhcmFsbGVsSW1h
Z2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgaW50IHNfcmVzb2x1dGlvblRocmVzaG9sZEZvclBh
cmFsbGVsID0gMzAwICogMzAwOworCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKIHVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9
IDEwMjQgKiAxMDI0OwogI2VuZGlmCkBAIC02NiwxMSArNzAsMTUgQEAgSW1hZ2VTb3VyY2U6On5J
bWFnZVNvdXJjZSgpCiB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNp
emVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVy
KQorICAgICAgICAvLyBPbmx5IEdJRiBkZWNvZGVyIGltcGxlbWVudHMgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlLgorICAgICAgICBpZiAobV9kZWNvZGVyICYmICFtX3BhcmFsbGVsRGVjb2RlcikKICAg
ICAgICAgICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJh
bWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVy
LmdldCgpKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOworCiAgICAgZGVsZXRlIG1f
ZGVjb2RlcjsKICAgICBtX2RlY29kZXIgPSAwOwogICAgIGlmIChkYXRhKQpAQCAtODgsNiArOTYs
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0
YSBhbmQgaW5zdGFudGlhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIg
cGx1Z2luLgogICAgIC8vIElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRl
dGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8v
IG1hZGUuCisKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNT
RVJUKG1fZGVjb2Rlcik7CisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1f
ZGVjb2RlcikgewogICAgICAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZVNv
dXJjZVB0cj4oSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQpAQCAtMTAyLDExICsxMTcsMTUgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBTdHJpbmcgSW1h
Z2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxl
bERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+ZmlsZW5h
bWVFeHRlbnNpb24oKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFt
ZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2
YWlsYWJsZSgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKQEAgLTExNiw2ICsxMzUsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpz
aXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50YXRpb24p
CiAgICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVj
b2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQog
CkBAIC0xMjUsNiArMTQ2LDggQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eChzaXplX3QgaW5kZXgsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmIChzaG91
bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+c2l6ZSgpOwogICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogSW50U2l6ZSgpOwog
fQogCkBAIC0xNDAsMjMgKzE2MywxMjAgQEAgc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0
aXRpb25Db3VudCgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAg
ICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rl
ci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAogc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIu
Z2V0KCkpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29k
ZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZykK
K3sKKyAgICBBU1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgaW5kZXgpKTsKKyAgICBB
U1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgIW1fb2JzZXJ2ZXIpKTsKKworICAgIGlm
ICghbV9kZWNvZGVyKSB7CisgICAgICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoaW5kZXgsIEltYWdlRnJhbWVEYXRhKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKKyAgICB9CisKKyAgICBpZiAoIXJldGFpbmVkTW9kZVJlbmRlcmluZyB8fCAhbV9vYnNl
cnZlciB8fCBmaXJzdEZyYW1lSXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm4gc2VyaWFsRGVj
b2RlKGluZGV4KTsKKworICAgIGlmIChzaG91bGREZWNvZGVQYXJhbGxlbCgpKSB7CisgICAgICAg
IHBhcmFsbGVsRGVjb2RlKCk7CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YSgpOworICAg
IH0KKworICAgIHJldHVybiBzZXJpYWxEZWNvZGUoaW5kZXgpOworfQorCitib29sIEltYWdlU291
cmNlOjpzaG91bGREZWNvZGVQYXJhbGxlbCgpCit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisK
KyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpID09IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFN0cmluZyBmaWxlRXh0ID0gZmlsZW5hbWVFeHRlbnNpb24oKTsK
KyAgICBpZiAoZmlsZUV4dCA9PSAiaWNvIiB8fCBmaWxlRXh0ID09ICJnaWYiKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoc2l6ZSgpLmFyZWEoKSA8IHNfcmVzb2x1dGlvblRocmVzaG9s
ZEZvclBhcmFsbGVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZUlzQ29tcGxldGUoKQoreworICAgIEFT
U0VSVChtX2RlY29kZXIpOworICAgIEltYWdlRnJhbWUqIGltYWdlRnJhbWUgPSAwOworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIGltYWdlRnJhbWUgPSBtX2RlY29kZXItPmZp
cnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZSAmJiBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KGltYWdlRnJhbWUpOworfQorCit2b2lkIEltYWdlU291cmNl
OjpwYXJhbGxlbERlY29kZSgpCit7CisgICAgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQo
KTsKKyAgICBtX3BhcmFsbGVsRGVjb2Rlci0+ZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OmRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCit7Cisg
ICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0
SW5kZXgoMCwgaW1hZ2VGcmFtZURhdGEsIHRydWUpOworCisgICAgaWYgKGltYWdlRnJhbWVEYXRh
Lm1faXNDb21wbGV0ZSkKKyAgICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKQoreworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyID0gYWRvcHRS
ZWYobmV3IFBhcmFsbGVsSW1hZ2VEZWNvZGVyKHRoaXMsIG1fZGVjb2RlcikpOworfQorCit2b2lk
IEltYWdlU291cmNlOjpjbGVhclBhcmFsbGVsRGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fb2Jz
ZXJ2ZXIpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9wYXJh
bGxlbERlY29kZXIuY2xlYXIoKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnNl
cmlhbERlY29kZShzaXplX3QgaW5kZXgpCit7CisgICAgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5j
ZWxlZCA9IGZhbHNlOworICAgIC8vIFJlbmRlckltYWdlIGFuZCBDYW52YXNFbGVtZW50IGNhbiBz
aGFyZSB0aGUgc2FtZSBDYWNoZWRJbWFnZS4KKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgICAgICBjbGVhclBhcmFsbGVs
RGVjb2RlcigpOworICAgICAgICBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IHRydWU7CisgICAg
fQorCiAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgs
IGltYWdlRnJhbWVEYXRhKTsKKworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2Vy
dmVyLT5kaWRSZWNlaXZlRnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSwgZmFsc2Ug
LyogcmV0YWluZWRNb2RlICovLCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCk7CisKKyAgICByZXR1
cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogeworICAgIEFTU0VSVCghbV9wYXJhbGxlbERl
Y29kZXIpOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKaW5kZXggMmU2NGQ3ZGVhNzM3MzRlN2Y3MDhhZjYwZDI5YTMxYjg0MTJmMTgwOS4uYzQyNzll
YzlmY2FkZDQzNDI1ZDMzMmJkZDgzOWJiNTVjYzUyNGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yOSw2ICsyOSw5IEBACiAjZGVm
aW5lIEltYWdlU291cmNlX2gKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpZiAh
VVNFKENHKQorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIKKyNlbmRp
ZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KQEAgLTY1LDYgKzY4LDkgQEAgY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIGNsYXNzIEltYWdl
U291cmNlT2JzZXJ2ZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CisjaWYgIVVT
RShDRykKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOworI2VuZGlmCiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKICNpZiBVU0UoQ0cpCkBAIC0xNDMsNyArMTQ5LDExIEBAIGNvbnN0IGludCBjQW5p
bWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAt
MTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi1jbGFzcyBJbWFnZVNvdXJjZSB7
CitjbGFzcyBJbWFnZVNvdXJjZQorI2lmICFVU0UoQ0cpCisgICAgOiBwdWJsaWMgUGFyYWxsZWxJ
bWFnZURlY29kZXJPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VTb3VyY2UpOwogcHVibGljOgogICAgIGVudW0gQWxwaGFPcHRpb24gewpAQCAtMjEwLDE3
ICsyMjAsMjQgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKIAot
ICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigp
IHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gTk9URTogQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICB2b2lkIHJlcXVlc3RGcmFtZUF0
SW5kZXgoc2l6ZV90KTsKLSAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90KTsKKyAgICAvLyBOT1RFOiBJZiBJbWFnZVNvdXJjZSBoYXMgSW1hZ2VTb3VyY2VPYnNlcnZl
ciwgdGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlc3VsdCB2aWEgZGlkRGVjb2RlKCkuCisgICAgLy8g
T3RoZXJ3aXNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSByZXN1bHQuIGUuZy4gR3JhcGhpY3ND
b250ZXh0M0QKKyAgICBJbWFnZUZyYW1lRGF0YSByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCwg
Ym9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQogICAg
IHN0YXRpYyB2b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhl
bHMpIHsgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KICNlbmRpZgog
CisjaWYgIVVTRShDRykKKyAgICAvLyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpOworI2VuZGlmCisK
IHByaXZhdGU6CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7
CiAjaWYgVVNFKENHKQogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCkBAIC0yMzMsOCArMjUwLDIwIEBAIHBy
aXZhdGU6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFt
ZSopIGNvbnN0OwogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIHZvaWQgY3JlYXRlUGFyYWxs
ZWxEZWNvZGVySWZOZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7Cisg
ICAgYm9vbCBzaG91bGREZWNvZGVQYXJhbGxlbCgpOworICAgIGJvb2wgZmlyc3RGcmFtZUlzQ29t
cGxldGUoKTsKKyAgICB2b2lkIHBhcmFsbGVsRGVjb2RlKCk7CisgICAgSW1hZ2VGcmFtZURhdGEg
c2VyaWFsRGVjb2RlKHNpemVfdCk7CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBt
X2RlY29kZXI7CiAgICAgSW1hZ2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKKwogICAgIEFs
cGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
bV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCmluZGV4IDcyYWY3MDhjN2VjZDExZjgxNmU4YThlMDI3
MjkwMjYwNjA4MjE0MjguLmQzMjA3ODJkOGU4MzBjMDRlOTlmMDFlMTQzZmQyOWE5NGE4MzIwZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZU9ic2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSW1hZ2VGcmFtZURhdGE7CiAv
LyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIEltYWdlU291
cmNlLCBpbmNsdWRpbmcgZGVjb2RpbmcuCiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNv
bnN0IEltYWdlRnJhbWVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJh
bWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0g
ZmFsc2UsIGJvb2wgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSkgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW1hZ2VTb3VyY2VPYnNlcnZlcigpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiOWNmYWY1NTMxMTM3ODQ1MGQzMzE0NjQyZWQxYzg4MzY5NDdh
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rlci5oIgor
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFBhcmFsbGVsRnJhbWVEYXRhOwordm9pZCBkaWREZWNvZGVUYXNrQ2FsbGJhY2so
UGFyYWxsZWxGcmFtZURhdGEqKTsKK3N0YXRpYyBJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFnZUZy
YW1lRGF0YShQYXJhbGxlbEZyYW1lRGF0YSopOworCitQYXJhbGxlbEltYWdlRGVjb2Rlcjo6UGFy
YWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciogb2JzZXJ2ZXIs
IEltYWdlRGVjb2RlciogZGVjb2RlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAg
LCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQorICAgICwgbV9ieXRlc09mRGF0YUNvbnN1bWVk
KDApCisgICAgLCBtX2ltYWdlRGVjb2RlcigwKQoreworICAgIGluaXRpYWxpemUoZGVjb2Rlcik7
Cit9CisKK1BhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29kZXIoKQorewor
ICAgIEFTU0VSVCghdmFsaWQoKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6Omlu
aXRpYWxpemUoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGRlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpICYmICFkZWNvZGVy
LT5zaXplKCkuaXNFbXB0eSgpKTsKKworICAgIG1fc2l6ZSA9IGRlY29kZXItPnNpemUoKTsKKyAg
ICBtX2ZpbGVuYW1lRXh0ZW5zaW9uID0gZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKKwor
ICAgIHNldERhdGEoZGVjb2Rlci0+ZGF0YSgpLCBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgp
KTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZyYW1lLnNl
dFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX2ltYWdlRGVj
b2RlciA9IGRlY29kZXI7CisgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOwor
ICAgIC8vIEFmdGVyIHRoaXMgbGluZSwgaXQgaXMgaWxsZWdhbCBmb3IgdGhlIG1haW4gdGhyZWFk
IHRvIGFjY2VzcyBtX2ltYWdlRGVjb2Rlci4KKworICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgbGFz
dCBsaW5lIGJlY2F1c2UgSW1hZ2VEZWNvZGVXb3JrZXIgZ3VhcmFudGVlcworICAgIC8vIHRoZSB2
aXNpYmlsaXR5IG9mIG1lbWJlcnMgaW4gdGhlIHRhc2sgdGhyZWFkLgorICAgIG1fZGVjb2RlV29y
a2VyID0gSW1hZ2VEZWNvZGVXb3JrZXI6OmFjcXVpcmVTaGFyZWRXb3JrZXIoKTsKK30KKwordm9p
ZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgaWYgKG1fZGVj
b2RlV29ya2VyLmdldCgpKSB7CisgICAgICAgIG1fZGVjb2RlV29ya2VyLT5pbnZhbGlkYXRlKCk7
CisgICAgICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgfQorICAgIC8vIFRoZSBtYWlu
IHRocmVhZCBjYW4gdXNlIG1faW1hZ2VEZWNvZGVyIGJlY2F1c2Ugb3RoZXIgdGhyZWFkcyBkbyBu
b3QgYWNjZXNzIG1faW1hZ2VEZWNvZGVyIGFmdGVyIHRoaXMgbGluZS4KKworICAgIG1faW1hZ2VE
ZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSwgbV9pc0FsbERhdGFSZWNlaXZlZCk7CisKKyAg
ICBtX3NpemUgPSBJbnRTaXplKCk7CisgICAgbV9maWxlbmFtZUV4dGVuc2lvbiA9ICIiOworCisg
ICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIG1fZGF0YS5jbGVhcigpOworICAg
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2ltYWdlRnJhbWUgPSBJbWFnZUZy
YW1lKCk7CisKKyAgICBpZiAobV9kYXRhRm9yVGFzay5nZXQoKSkKKyAgICAgICAgbV9kYXRhRm9y
VGFzay5jbGVhcigpOworCisgICAgbV9pbWFnZURlY29kZXIgPSAwOworfQorCit2b2lkIFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lzQWxsRGF0
YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOworICAgIG1fZGF0YSA9IGRhdGE7Cit9CisKK3Zv
aWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50ID0g
ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7CisgICAgaWYgKCFzZWdtZW50LmdldCgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9kZWNvZGVXb3JrZXItPnBvc3RUYXNrKGJpbmQoJlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrLCB0aGlzLCBzZWdtZW50LnJlbGVhc2UoKSkpOworfQorCitQ
YXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ+IFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpleHRyYWN0U2VnbWVudEZvclRhc2soKQoreworICAgIEFTU0VSVCht
X2J5dGVzT2ZEYXRhQ29uc3VtZWQgPj0gMCAmJiBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPD0gbV9k
YXRhLT5zaXplKCkpOworCisgICAgaW50IHNpemVPZlNlZ21lbnQgPSBtX2RhdGEtPnNpemUoKSAt
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBpZiAoIXNpemVPZlNlZ21lbnQpCisgICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4oKTsKKworICAgIE93blB0cjxF
bmNvZGVkRGF0YVNlZ21lbnQ+IHNlZ21lbnQoYWRvcHRQdHIobmV3IEVuY29kZWREYXRhU2VnbWVu
dCgpKSk7CisgICAgY29uc3QgY2hhciogc3JjUHRyID0gbV9kYXRhLT5kYXRhKCkgKyBtX2J5dGVz
T2ZEYXRhQ29uc3VtZWQ7CisgICAgc2VnbWVudC0+bV9zZWdtZW50LmFwcGVuZChzcmNQdHIsIHNp
emVPZlNlZ21lbnQpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IG1fZGF0YS0+c2l6ZSgp
OworCisgICAgc2VnbWVudC0+bV9pc0FsbERhdGFSZWNlaXZlZCA9IG1faXNBbGxEYXRhUmVjZWl2
ZWQ7CisKKyAgICByZXR1cm4gc2VnbWVudC5yZWxlYXNlKCk7Cit9CisKK3N0cnVjdCBQYXJhbGxl
bEZyYW1lRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyYWxsZWxGcmFtZURhdGEp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFBh
cmFsbGVsRnJhbWVEYXRhKFBhc3NSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IHBhcmFsbGVs
RGVjb2RlcikKKyAgICAgICAgOiBtX3BhcmFsbGVsRGVjb2RlcihwYXJhbGxlbERlY29kZXIpCisg
ICAgICAgICwgbV9kZWNvZGVkU2VnbWVudCgpCisgICAgICAgICwgbV9zdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAgICAgICAsIG1f
cHJlbXVsdGlwbHlBbHBoYSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB+UGFyYWxsZWxGcmFt
ZURhdGEoKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworICAgIE93bkFycmF5UHRyPEltYWdlRnJhbWU6OlBpeGVsRGF0
YT4gbV9kZWNvZGVkU2VnbWVudDsKKyAgICBJbWFnZUZyYW1lOjpGcmFtZVN0YXR1cyBtX3N0YXR1
czsKKyAgICBib29sIG1faGFzQWxwaGE7CisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7Cisg
ICAgSW50UmVjdCBtX2RlY29kZWRSZWN0OworfTsKKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6ZGVjb2RlVGFzayhQYXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0
YVNlZ21lbnQ+IHBhc3NTZWdtZW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdt
ZW50PiBzZWdtZW50ID0gcGFzc1NlZ21lbnQ7CisKKyAgICAvLyAxLiBTZW5kIHNlZ21lbnQgZGF0
YSB0byBJbWFnZURlY29kZXIuCisgICAgaWYgKCFtX2RhdGFGb3JUYXNrKSB7CisgICAgICAgIG1f
ZGF0YUZvclRhc2sgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgLy8gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBkb2VzIG5vdCBhbGxvdyB0d28gdGhy
ZWFkcyB0byBhY2Nlc3Mgb25lIFJlZkNvdW50ZWQgb2JqZWN0LgorICAgICAgICAvLyBtX2RhdGFG
b3JUYXNrIGlzIHVzZWQgYnkgYm90aCB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSB0YXNrIHRocmVh
ZDoKKyAgICAgICAgLy8gVGhlIHRhc2sgdGhyZWFkIGNyZWF0ZXMsIHVzZXMgYW5kIHJlbW92ZXMg
bV9kYXRhRm9yVGFzay4gVGhlIG1haW4gdGhyZWFkIG1heSByZW1vdmUKKyAgICAgICAgLy8gbV9k
YXRhRm9yVGFzayBpZiB0aGUgdGFzayB0aHJlYWQgY291bGQgbm90IHJlbW92ZSBtX2RhdGFGb3JU
YXNrLgorICAgICAgICAvLworICAgICAgICAvLyBQYXJhbGxlbCBpbWFnZSBkZWNvZGVycyBtYW5h
Z2UgbV9kYXRhRm9yVGFzayBpbiBhIHRocmVhZC1zYWZlIHdheS4gSG93ZXZlciwKKyAgICAgICAg
Ly8gd2UgY2FuJ3QgdGVsbCB0aGUgdmVyaWZpZXIgdGhhdCB3ZSBhcmUgc2FmZSBieSBzaW1wbHkg
cGFzc2luZyBhIG11dGV4CisgICAgICAgIC8vIGJlY2F1c2UgbGliZGlzcGF0Y2ggZG9lcyBub3Qg
ZXZlbiBndWFyYW50ZWUgZGVjb2RlVGFzayBpcyBjYWxsZWQgYnkgdGhlIHNhbWUgdGhyZWFkCisg
ICAgICAgIC8vIGVhY2ggdGltZS4gU28gdHVybiBvZmYgdGhlIHZlcmlmaWVyIGhlcmUuCisgICAg
ICAgIG1fZGF0YUZvclRhc2stPnR1cm5PZmZWZXJpZmllcigpOworI2VuZGlmCisgICAgfQorICAg
IG1fZGF0YUZvclRhc2stPmFwcGVuZChzZWdtZW50LT5tX3NlZ21lbnQpOworICAgIG1faW1hZ2VE
ZWNvZGVyLT5zZXREYXRhKG1fZGF0YUZvclRhc2suZ2V0KCksIHNlZ21lbnQtPm1faXNBbGxEYXRh
UmVjZWl2ZWQpOworCisgICAgSW1hZ2VGcmFtZSogb2xkQnVmZmVyID0gbV9pbWFnZURlY29kZXIt
PmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICBpbnQgbGFzdERlY29kZWRSb3cg
PSBvbGRCdWZmZXIgPyBvbGRCdWZmZXItPmxhc3REZWNvZGVkUm93KCkgOiAwOworCisgICAgLy8g
Mi4gRGVjb2RlIGFuIGltYWdlIGluY3JlbWVudGFsbHkuCisgICAgSW1hZ2VGcmFtZSogYnVmZmVy
ID0gbV9pbWFnZURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKKyAgICAg
ICAgQVNTRVJUKCFzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIDMuIE1ha2UgYSBQYXJhbGxlbEZyYW1lRGF0YSBpbiBvcmRlciB0
byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICBQYXJhbGxlbEZyYW1lRGF0YSogcGFy
YWxsZWxGcmFtZURhdGEgPSBuZXcgUGFyYWxsZWxGcmFtZURhdGEodGhpcyk7CisgICAgcGFyYWxs
ZWxGcmFtZURhdGEtPm1fc3RhdHVzID0gYnVmZmVyLT5zdGF0dXMoKTsKKyAgICBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9oYXNBbHBoYSA9IGJ1ZmZlci0+aGFzQWxwaGEoKTsKKyAgICBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9wcmVtdWx0aXBseUFscGhhID0gYnVmZmVyLT5wcmVtdWx0aXBseUFscGhhKCk7
CisKKyAgICBpbnQgbmV3TGFzdERlY29kZWRSb3cgPSBidWZmZXItPmxhc3REZWNvZGVkUm93KCk7
CisgICAgLy8gT25seSBpbiBCTVAsIGxhc3REZWNvZGVkUm93IGNhbiBiZSBiaWdnZXIgdGhhbiBu
ZXdMYXN0RGVjb2RlZFJvdy4KKyAgICBpbnQgbGFzdERlY29kZWRNaW5Sb3cgPSBzdGQ6Om1pbihs
YXN0RGVjb2RlZFJvdywgbmV3TGFzdERlY29kZWRSb3cpOworICAgIGludCBsYXN0RGVjb2RlZE1h
eFJvdyA9IHN0ZDo6bWF4KGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAg
cGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFJlY3QgPSBJbnRSZWN0KDAsIGxhc3REZWNvZGVk
TWluUm93LCBtX2ltYWdlRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGxhc3REZWNvZGVkTWF4Um93
IC0gbGFzdERlY29kZWRNaW5Sb3cgKyAxKTsKKworICAgIC8vIDQuIENyZWF0ZSBkZWNvZGVkIHNl
Z21lbnQgZGF0YSBpbiBvcmRlciB0byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICAv
LyAgICBJZiB0aGUgc3RhdHVzIGlzIEZyYW1lQ29tcGxldGUsIHRoaXMgaXMgbm90IG5lZWRlZCBi
ZWNhdXNlIGEgTmF0aXZlSW1hZ2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZSBkZWNvZGVyIG9u
IHRoZSBtYWluIHRocmVhZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzID09
IEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCkgeworICAgICAgICBpbnQgc2VnbWVudFNpemUgPSBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAgICAgICBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2VnbWVudCA9IGFkb3B0QXJyYXlQdHIobmV3IElt
YWdlRnJhbWU6OlBpeGVsRGF0YVtzZWdtZW50U2l6ZV0pOworCisgICAgICAgIEltYWdlRnJhbWU6
OlBpeGVsRGF0YSogc2VnbWVudEFkZHIgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2Vn
bWVudC5nZXQoKTsKKyAgICAgICAgbWVtY3B5KHNlZ21lbnRBZGRyLCBidWZmZXItPmdldEFkZHIo
MCwgbGFzdERlY29kZWRNaW5Sb3cpLCBzZWdtZW50U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQ
aXhlbERhdGEpKTsKKyAgICB9IGVsc2UgeyAvLyBGcmFtZUNvbXBsZXRlCisgICAgICAgIG1faW1h
Z2VEZWNvZGVyLT5zZXREYXRhKDAsIGZhbHNlKTsKKyAgICAgICAgbV9kYXRhRm9yVGFzay5jbGVh
cigpOworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZChkaWREZWNvZGVUYXNrQ2Fs
bGJhY2ssIHBhcmFsbGVsRnJhbWVEYXRhKSk7Cit9CisKK3ZvaWQgZGlkRGVjb2RlVGFza0NhbGxi
YWNrKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIC8vIElmIGEgY2xpZW50IGNhbGxlZCBQYXJhbGxlbEltYWdl
RGVjb2Rlcjo6Y2xlYXIoKSwgUGFyYWxsZWxJbWFnZURlY29kZXIgaXMgaW52YWxpZGF0ZWQuCisg
ICAgaWYgKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3BhcmFsbGVsRGVjb2Rlci0+dmFsaWQoKSkKKyAg
ICAgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT5kaWREZWNvZGVUYXNr
KHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBkZWxldGUgcGFyYWxsZWxGcmFtZURhdGE7Cit9CisK
K0ltYWdlRnJhbWVEYXRhIGNyZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKiBw
YXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YTsK
KyAgICBpbWFnZUZyYW1lRGF0YS5tX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b247CisgICAgaW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlID0gcGFyYWxsZWxGcmFtZURhdGEt
Pm1fc3RhdHVzID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgaW1hZ2VGcmFtZURh
dGEubV9oYXNBbHBoYSA9ICFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgfHwgcGFyYWxsZWxG
cmFtZURhdGEtPm1faGFzQWxwaGE7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOworfQorCit2
b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkaWREZWNvZGVUYXNrKFBhcmFsbGVsRnJhbWVEYXRh
KiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgIT0gSW1hZ2VGcmFtZTo6RnJhbWVF
bXB0eSk7CisKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUltYWdl
RnJhbWVEYXRhKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGlmICghaW1hZ2VGcmFtZURhdGEu
bV9pc0NvbXBsZXRlKQorICAgICAgICBkaWREZWNvZGVQYXJ0aWFsKGltYWdlRnJhbWVEYXRhLCBw
YXJhbGxlbEZyYW1lRGF0YSk7CisgICAgZWxzZQorICAgICAgICBkaWREZWNvZGVDb21wbGV0ZShp
bWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29k
ZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhLCBQYXJhbGxlbEZyYW1lRGF0
YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAg
ICBzeW5jSW1hZ2VGcmFtZShwYXJhbGxlbEZyYW1lRGF0YSk7CisKKyAgICBpbWFnZUZyYW1lRGF0
YS5tX2ZyYW1lID0gbV9pbWFnZUZyYW1lLmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2Vy
dmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjphcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSog
cGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgY29uc3QgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBj
b25zdCBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50Lmdl
dCgpOworICAgIGludCBzZWdtZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRS
ZWN0LnNpemUoKS5hcmVhKCk7CisgICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0QWRkciA9
IG1faW1hZ2VGcmFtZS5nZXRBZGRyKDAsIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0
LnkoKSk7CisgICAgbWVtY3B5KGRlc3RBZGRyLCBzZWdtZW50QWRkciwgc2VnbWVudFNpemUgKiBz
aXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURl
Y29kZXI6OnN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0
YSkKK3sKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIGEg
dmFsaWQgbmF0aXZlIGltYWdlIGluIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKS4KKyAg
ICBtX2ltYWdlRnJhbWUuc2V0U3RhdHVzKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyk7Cisg
ICAgbV9pbWFnZUZyYW1lLnNldEhhc0FscGhhKHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhh
KTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShwYXJhbGxlbEZyYW1lRGF0
YS0+bV9wcmVtdWx0aXBseUFscGhhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6
ZGlkRGVjb2RlQ29tcGxldGUoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2RlY29kZVdvcmtlci0+aW52YWxpZGF0
ZSgpOworICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgLy8gVGhlIG1haW4gdGhyZWFk
IGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0aHJlYWRzIGRvIG5vdCBhY2Nl
c3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gbV9pbWFnZURlY29kZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAg
ICBBU1NFUlQoYnVmZmVyKTsKKworICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBidWZmZXIt
PmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2VydmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFt
ZURhdGEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmYwYTM4YWI3ODMwYmU0
N2ZiZjAxOWY3NzAyZmQwMzJkNTc4ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVjb2Rlcl9oCisjZGVm
aW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkltYWdlRGVjb2RlV29ya2Vy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZUZyYW1lRGF0YTsKK2NsYXNzIFBhcmFsbGVsRnJh
bWVEYXRhOworCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQYXJhbGxlbEltYWdlRGVjb2Rlcj4geworcHVibGljOgorICAgIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyKFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIqLCBJbWFnZURlY29kZXIq
KTsKKyAgICB+UGFyYWxsZWxJbWFnZURlY29kZXIoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgp
OworCisgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKworICAgIHZvaWQgZGVjb2RlKCk7CisKKyAgICBpbmxpbmUgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZUV4dGVuc2lvbjsgfQorICAgIGlubGlu
ZSBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIGluaXRpYWxpemUoSW1hZ2VEZWNvZGVyKik7CisKKyAgICBpbmxpbmUgYm9vbCB2YWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZWNvZGVyOyB9CisKKyAgICBzdHJ1Y3QgRW5jb2Rl
ZERhdGFTZWdtZW50IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5jb2RlZERhdGFT
ZWdtZW50KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBFbmNvZGVkRGF0YVNlZ21lbnQoKSB7IH0KKyAgICAgICAgVmVjdG9yPGNoYXI+IG1f
c2VnbWVudDsKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOworICAgIH07CisKKyAg
ICBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7
CisKKyAgICAvLyBPbmx5IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdGFzayB0aHJlYWQu
CisgICAgdm9pZCBkZWNvZGVUYXNrKFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50Pik7CisK
KyAgICB2b2lkIGRpZERlY29kZVRhc2soUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2b2lkIGRp
ZERlY29kZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmLCBQYXJhbGxlbEZyYW1lRGF0YSopOworICAg
IHZvaWQgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsK
KyAgICB2b2lkIHN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKik7CisgICAgdm9pZCBk
aWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYpOworICAgIGZyaWVuZCB2b2lkIGRpZERl
Y29kZVRhc2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworCisgICAgUGFyYWxsZWxJbWFn
ZURlY29kZXJPYnNlcnZlciogbV9vYnNlcnZlcjsKKworICAgIEludFNpemUgbV9zaXplOworICAg
IFN0cmluZyBtX2ZpbGVuYW1lRXh0ZW5zaW9uOworCisgICAgLy8gRm9yIGlucHV0IGRhdGEKKyAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIGludCBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7CisKKyAgICAvLyBGb3Igb3V0cHV0
IGRhdGEKKyAgICBJbWFnZUZyYW1lIG1faW1hZ2VGcmFtZTsKKworICAgIC8vIFRoZSB0YXNrIHRo
cmVhZCBjYW4gYWNjZXNzIG9ubHkgbV9kYXRhRm9yVGFzayBhbmQgbV9pbWFnZURlY29kZXIuCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhRm9yVGFzazsKKworICAgIEltYWdlRGVjb2Rl
ciogbV9pbWFnZURlY29kZXI7CisKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+IG1fZGVj
b2RlV29ya2VyOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxs
ZWxJbWFnZURlY29kZXJPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhN2UxOTcwNWUxZTI5YzVmMzlh
ZGJkY2JlOTc3NzhhMTgxZDhlNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlcl9oCisjZGVmaW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXJfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworCisvLyBJbnRlcmZhY2UgZm9y
IG5vdGlmaWNhdGlvbiBhYm91dCBkZWNvZGluZyBjb21wbGV0aW9uIG9mIGFuIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyLgorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpID0gMDsK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIo
KSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDliYWI2NjU1N2UxZjcxNDI4NzEwZDM1ZTg1OGY1OTNiZThkZGRiYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1h
cEltYWdlLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgorCisjaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlPiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKEJp
dG1hcEltYWdlKiBiaXRtYXBJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlKGJpdG1hcEltYWdlKSk7Cit9CisKK1JldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2Up
CisgICAgOiBtX2JpdG1hcEltYWdlKGJpdG1hcEltYWdlKQorICAgICwgbV9yZXRhaW5lZE1vZGVD
b3VudCgwKQoreworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRN
b2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCk7Cit9CisKK0ludFNpemUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMp
OworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zaXplKCk7Cit9CisKK2Jvb2wgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAg
IFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBt
X2JpdG1hcEltYWdlLT5nZXRIb3RTcG90KHBvaW50KTsKK30KKworYm9vbCBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPmRhdGFDaGFuZ2VkKGFsbERhdGFSZWNlaXZlZCk7Cit9CisKK1N0cmluZyBSZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2Jp
dG1hcEltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1h
Z2UtPmRlc3Ryb3lEZWNvZGVkRGF0YShkZXN0cm95QWxsKTsKK30KKwordW5zaWduZWQgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRTaXplKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1v
ZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rh
cnRBbmltYXRpb24oYm9vbCBjYXRjaFVwSWZOZWNlc3NhcnkpCit7CisgICAgUmV0YWluZWRNb2Rl
U2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RhcnRB
bmltYXRpb24oY2F0Y2hVcElmTmVjZXNzYXJ5KTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRt
YXBJbWFnZTo6c3RvcEFuaW1hdGlvbigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWlu
ZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RvcEFuaW1hdGlvbigpOwor
fQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRt
YXBJbWFnZS0+cmVzZXRBbmltYXRpb24oKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAgICBSZXRh
aW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRt
YXBJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKworYm9vbCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoKQoreworICAgIFJldGFpbmVk
TW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcElt
YWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+Y3Vy
cmVudEZyYW1lSXNDb21wbGV0ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1v
ZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5kcmF3KGNvbnRleHQsIGRzdFJlY3Qs
IHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworfQorCitib29sIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3IoKQoreworICAgIFJldGFpbmVkTW9kZVNh
dmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5t
YXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsKK30KKworQ29sb3IgUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6OnNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVk
TW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zb2xpZENvbG9yKCk7
Cit9CisKK1JldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZlcihjb25zdCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZSogaW1hZ2UsIGJvb2wgcmV0YWluZWQpCisgICAgOiBtX2ltYWdlKGlt
YWdlKQorICAgICwgbV9yZXRhaW5lZChyZXRhaW5lZCkKK3sKKyAgICBpZiAobV9yZXRhaW5lZCkK
KyAgICAgICAgbV9pbWFnZS0+YmVnaW5SZXRhaW5lZE1vZGUoKTsKK30KKworUmV0YWluZWRNb2Rl
U2F2ZXI6On5SZXRhaW5lZE1vZGVTYXZlcigpCit7CisgICAgaWYgKG1fcmV0YWluZWQpCisgICAg
ICAgIG1faW1hZ2UtPmVuZFJldGFpbmVkTW9kZSgpOworfQorCitSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSogaW1hZ2UpCit7CisgICAgQVNT
RVJUKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpOworCisgICAgQml0bWFwSW1hZ2UqIGJpdG1hcElt
YWdlID0gc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSk7CisgICAgaWYgKCFiaXRtYXBJ
bWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQoKSkKKyAgICAgICAgYml0bWFwSW1hZ2UtPm1f
cmV0YWluZWRNb2RlSW1hZ2UgPSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKGJpdG1h
cEltYWdlKTsKKworICAgIHJldHVybiBiaXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5n
ZXQoKTsKK30KKworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKElt
YWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2UpOworICAgIHJl
dHVybiBpbWFnZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlN2E4
YzM4NTU3MzBjZTljOTlhZTE5ZjEzODA5ZGFmY2Y4NTdlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlX2gKKyNkZWZpbmUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsK
K2NsYXNzIFJldGFpbmVkTW9kZVNhdmVyOworCitjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgZnJpZW5kIGNsYXNzIFJldGFpbmVkTW9kZVNhdmVyOwor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBj
cmVhdGUoQml0bWFwSW1hZ2UqKTsKKworICAgIHZpcnR1YWwgflJldGFpbmVkTW9kZUJpdG1hcElt
YWdlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBkYXRh
Q2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVk
U2l6ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJvb2wgY2F0
Y2hVcElmTmVjZXNzYXJ5ID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lSGFzQWxwaGEoKTsKKworICAgIGJvb2wgY3VycmVudEZyYW1lSXNDb21w
bGV0ZSgpOworCisgICAgaW5saW5lIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXRhaW5lZE1vZGVDb3VudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9y
KCk7CisgICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoQml0bWFwSW1hZ2UqKTsKKworICAg
IGlubGluZSB2b2lkIGJlZ2luUmV0YWluZWRNb2RlKCkgY29uc3QgeyBtX3JldGFpbmVkTW9kZUNv
dW50Kys7IH0KKyAgICBpbmxpbmUgdm9pZCBlbmRSZXRhaW5lZE1vZGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgbV9yZXRhaW5lZE1vZGVDb3VudC0tOworICAgICAgICBBU1NFUlQobV9yZXRhaW5l
ZE1vZGVDb3VudCA+PSAwKTsKKyAgICB9CisKKyAgICBCaXRtYXBJbWFnZSogbV9iaXRtYXBJbWFn
ZTsKKyAgICBtdXRhYmxlIGludCBtX3JldGFpbmVkTW9kZUNvdW50OworfTsKKworY2xhc3MgUmV0
YWluZWRNb2RlU2F2ZXIgeworcHVibGljOgorICAgIFJldGFpbmVkTW9kZVNhdmVyKGNvbnN0IFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlKiwgYm9vbCByZXRhaW5lZCA9IHRydWUpOworICAgIH5SZXRh
aW5lZE1vZGVTYXZlcigpOworCitwcml2YXRlOgorICAgIGNvbnN0IFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlKiBtX2ltYWdlOworICAgIGJvb2wgbV9yZXRhaW5lZDsKK307CisKKworUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKK0ltYWdl
KiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTNhNTY1ZDE4NjU0MjE3MWY0MGEyNjM1MmFhZTgwNjk4
YjgwOTRhMC4uNmY5NTc0MDc4OGZjM2U2NzYzY2YyMWZiYjRmNmY2ZDdmNDAwMzk2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCkBAIC03NjYsMTMgKzc2NiwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAg
ICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgICAgICBpZiAoIW5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBBU1NFUlQobmV3SW1hZ2UpOwogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1h
Z2UgY2hhbmdlZDsgd2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8KICAgICAg
ICAgLy8gQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUg
YSBuZXcgaW1hZ2UgZXZlcnkgdGltZS4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoIW1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlIHx8IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpICE9IG5ld0ltYWdlKTsK
ICAgICAgICAgCiAgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7
CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKaW5kZXggZGM2YTRkNGJjYjcyYzZhZTczNGZlNzM5YThjNGNlN2Q1NjQxNWY0Ny4u
ZDA2YjFmNzdiZmRhNTkzNGJlZDc2Y2UxOTI5NzBhMmM0YzI4MTIxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2
ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAs
IG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9o
YXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAg
IGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRleCAyNTQyY2Y4ZmE5MWQwYjhhNzE0Mzg1
YTRlMzAyMzk2NzgzZDk2MWRkLi5iNzQyNWE5ZTgxNmZiM2JlZWRiMzJlMDA3ZDdkMmI4ZDMxNTEy
ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVu
c2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFn
ZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFn
ZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFn
ZUZyYW1lRGF0YSBpbWFnZUltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJhbWVBdElu
ZGV4KDApOwogICAgICAgICBpZiAoIWltYWdlSW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VDYWly
bz4gbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihpbWFnZUltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcAppbmRleCA3ODBiYTQ0ZDg0MWE2MDA5OTM5ODhkYTIzMTQ2MzA4
MjlkNDMzOTNkLi4zODdmMWVmNTJlZGU5MTM4YTQwYWRkZGM5ZjZkNTc4NzU2Yzg1MmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGRlY29kZXIuc2V0RGF0
YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1h
Z2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgSW1h
Z2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLnJlcXVlc3RGcmFtZUF0SW5kZXgo
MCk7CiAgICAgICAgIGRlY29kZWRJbWFnZS5hZG9wdENGKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUp
OwogICAgICAgICBjZ0ltYWdlID0gZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA3
M2NlZTIyMDVkNWYyZDk3MWI5ZGFhYWI2MzQzNWVjZjUxOTAwYWYwLi40MDYzZGYwNTQ4YTE3YTA2
MTAwYzYwN2ZkMmM3ODI5NGQ4MWJlZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtODEsNiArODEsNyBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAg
ICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkK
IHsKICAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwogICAgIENH
RmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXgg
YjQ0NTQ5OTNiNTI4N2M1NGZmNzRiMjliMGRlMDMwNjI3NmFmYjQyNC4uZmE5YmMzZWQyMDMwMjVj
YTgwMGM5YjNhYTcwYmQ1NWIzZmYyNmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNl
cnZlci5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0zMDksMTEgKzMxMCwxMiBAQCBzaXplX3QgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291
cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sKQogewogICAgIEFTU0VSVCht
X29ic2VydmVyKTsKICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUZy
YW1lQXRJbmRleChpbmRleCk7CiAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJbmRl
eChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0K
IAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dmcvSW1hZ2VPcGVuVkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnZnL0ltYWdlT3BlblZHLmNwcAppbmRleCBjZDg3OTRlNTM5Y2ZkNTBlZTg4YTc3ZTA3YzQ1Zjgy
YWI5Y2Q3MzUzLi45MDAwZmMzZGZiNWIzMDljZGFmYWE5OTcxMjViN2I5NjM1ZWYzZmI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVu
VkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFn
ZU9wZW5WRy5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFRp
bGVkSW1hZ2VPcGVuVkcqIHRpbGVkSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAg
ICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1
ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2l6ZS53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKG1f
c2l6ZS5oZWlnaHQoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZVF0LmNwcAppbmRleCBlNjc1Y2Q0MmJmMzEwOTRlYWFiZWQxODEwODQwZTc4ZjBh
MTY0MWIzLi45N2I1NjUyZjNkNDc5OTdmZGU0ZTkxMTE4M2U4MDRhOWU2YTBmNWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMjE0
LDYgKzIxNCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShRSW1hZ2UqIGltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6
ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9p
c0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBpbnQgd2lkdGggPSBpbWFnZS0+d2lkdGgoKTsK
ICAgICBpbnQgaGVpZ2h0ID0gaW1hZ2UtPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNr
aWEuY3BwCmluZGV4IGY1NmQ3MjQ1YWQxMGVjM2FlODViZWQ0MjcwOWU2ZjZiNDcyYjJjNTAuLjFm
MDQ1OWM1NGFjNTA1ZmM3MmJkM2NiMDg2ZWFlZTI2ODhhNWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dDNEU2tpYS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdl
LT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1l
RGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFnZUZyYW1l
RGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVxdWVzdEZyYW1lQXRJbmRleCgwKTsKICAg
ICAgICAgaWYgKCFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhhID0gaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDI4MDI5MzNh
OTk2YzUzYzM4NzEyZDRkZDcxMTg3YjNhNjU1ZDkwZjIuLjQ1Y2Y2ZGJjODg5ODQ2ZmRiM2FjMDNk
MzIwNzFkMDcyZDlmNmI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcApAQCAtMzE1LDggKzMxNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiB2YWx1ZSkKICovCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQog
ewotICAgIGlmIChpbWFnZSA9PSBtX2ltYWdlKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KGltYWdlICE9IG1faW1hZ2UpOwogCiAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2lt
YWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3gu
Y3BwCmluZGV4IGI3YzI0OTZjNzNiNTI2NWYxZDg1MzRlMzM3ZWU4YzIwZmUzMDI5ODkuLmI0YjU3
YmU5YmEzNDMwNWQzNDlmYmY0YzRlNWI0NzY3NWZiODMxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCkBAIC05NSw2ICs5NSw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCB3eEJpdG1hcCYgYml0bWFwKQogICAgICwgbV9k
ZWNvZGVkU2l6ZSgwKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogICAgICwgbV9mcmFt
ZUNvdW50KDEpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIG1fZGVjb2Rl
ZFNpemUgPSBiaXRtYXAuR2V0V2lkdGgoKSAqIGJpdG1hcC5HZXRIZWlnaHQoKSAqIDQ7CiAgICAg
bV9zaXplID0gSW50U2l6ZShiaXRtYXAuR2V0V2lkdGgoKSwgYml0bWFwLkdldEhlaWdodCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwCmluZGV4IDcyYjVkZGMyZGUzMWQwMDQwNzI3ZDQ0ZTk1MTYyYWRmNmJhYzc2
YzcuLjkwNGY4NjY4NjMzMmRhOGMzMjZkZDBmNmViNTdiYjQ1NTY3NzVkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMTQwLDYgKzE0MCw3IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAKIEltYWdl
RnJhbWU6OkltYWdlRnJhbWUoKQogICAgIDogbV9oYXNBbHBoYShmYWxzZSkKKyAgICAsIG1fbGFz
dERlY29kZWRSb3coMCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0
aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCkBAIC0x
NjUsNiArMTY2LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7CiAgICAg
bV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX2J5dGVzID0gMDsKKyAgICBtX2xhc3REZWNv
ZGVkUm93ID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAgLy8gTk9URTogRG8g
bm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgY2Fs
bHMgdGhpcwogICAgIC8vIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rp
b25zIGxpa2UgaW5pdEZyYW1lQnVmZmVyKCkgYW5kCkBAIC0xODcsNiArMTg5LDcgQEAgYm9vbCBJ
bWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICBt
X2J5dGVzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOwogICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6
ZTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKKyAgICBtX2xhc3REZWNvZGVk
Um93ID0gb3RoZXIubV9sYXN0RGVjb2RlZFJvdzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTk5LDYgKzIwMiw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGlu
dCBuZXdIZWlnaHQpCiAgICAgbV9iYWNraW5nU3RvcmUucmVzaXplKGJhY2tpbmdTdG9yZVNpemUp
OwogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXplID0gSW50
U2l6ZShuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKIAog
ICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4
IDkxMTg3OGUxZDk2MjIyNjQ3ZTdmMzQ3ZTc2NjJkMmZiZWYzZjAyOGIuLjI3MDNlNDg4YjhlNjhh
NmU5NmNkY2I1YWIyZTk1NmU3YTU1YWRlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTgsNiArMTE4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2
ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworICAgICAg
ICBpbnQgbGFzdERlY29kZWRSb3coKSBjb25zdCB7IHJldHVybiBtX2xhc3REZWNvZGVkUm93OyB9
CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KQEAgLTEyNSw2ICsxMjYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBh
bHBoYSk7CisgICAgICAgIGlubGluZSB2b2lkIHNldExhc3REZWNvZGVkUm93KGludCBsYXN0RGVj
b2RlZFJvdykgeyBtX2xhc3REZWNvZGVkUm93ID0gbGFzdERlY29kZWRSb3c7IH0KICAgICAgICAg
dm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJik7CiAgICAgICAgIHZvaWQg
c2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVS
ZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwpA
QCAtMTgxLDYgKzE4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KICAgICAgICAgQ29sb3JQcm9maWxl
IG1fY29sb3JQcm9maWxlOwogI2VuZGlmCisgICAgICAgIGludCBtX2xhc3REZWNvZGVkUm93Owog
ICAgICAgICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMg
anVzdCBiZSB0aGUgZW50aXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUK
QEAgLTIyOCw2ICsyMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX2lz
QWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKKyAgICAgICAg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisKICAg
ICAgICAgLy8gTGF6aWx5LWRlY29kZXMgZW5vdWdoIG9mIHRoZSBpbWFnZSB0byBnZXQgdGhlIHNp
emUgKGlmIHBvc3NpYmxlKS4KICAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB0aGF0IGhhcyB0
byBiZSBkb25lIGJ5IGVhY2ggc3ViY2xhc3M7IGZhY3RvciB0aGUKICAgICAgICAgLy8gZGVjb2Rl
IGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KQEAgLTI3Niw2ICsyODEsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAg
ICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAK
KyAgICAgICAgLy8gUmV0dXJucyBhbiBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlciB3aXRob3V0
IGRlY29kaW5nIG1vcmUuCisgICAgICAgIEltYWdlRnJhbWUqIGZpcnN0SW1hZ2VGcmFtZVdpdGhv
dXREZWNvZGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSA/IDAgOiAmbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOworICAgICAgICB9CisK
ICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsg
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDZhNjVlNjE3ZDE5ZTY3YmZhMjE4MDUzODdjMTE5NWRhNDgyMWRiNmQuLmJkY2Fl
ZjA1ZWE0MDExNWQwNmNmNzM1ZjA5MTlhYWM0YjIxOWVlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2ti
ZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTU3LDYgKzE1Nyw3IEBAIGludCBJbWFnZVJl
YWRlcjo6ZGVjb2RlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgSW1hZ2VGcmFtZSogYUZy
YW1lKQogICAgICAgICAgICAgYUZyYW1lLT5zZXRSR0JBKGksIGosIGN1clB0clswXSwgY3VyUHRy
WzFdLCBjdXJQdHJbMl0sIDI1NSk7CiAgICAgICAgICAgICBjdXJQdHIgKz0gMzsKICAgICAgICAg
fQorICAgICAgICBhRnJhbWUtPnNldExhc3REZWNvZGVkUm93KGopOwogICAgIH0KICAgICByZXR1
cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjBhMjQ4YzdkM2JjYjEx
Y2FkN2M2NzY5NWViODI3NTc1Mjc4MjQ5My4uZjc0ZGRlM2EwZGZmYWFiNzliMDVhYjQzOGJkMWZm
OGZlYTJjMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTY0LDggKzY0LDE1
IEBAIHZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFi
bGUoKQogewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkKKyAgICBp
ZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgLy8gT25seSBC
TVBJbWFnZURlY29kZXIgbXVzdCBtYWtlIG1fZnJhbWVCdWZmZXJDYWNoZVswXSBpbiBpc1NpemVB
dmFpbGFibGUoKSwKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBJbWFn
ZUZyYW1lOjptX2xhc3REZWNvZGVkUm93IGNhbiBiZSAiaGVpZ2h0IC0gMSIuCisgICAgICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2ZyYW1lQnVm
ZmVyQ2FjaGUucmVzaXplKDEpOworICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmZpcnN0
KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOworICAgICAgICB9CiAg
ICAgICAgIGRlY29kZSh0cnVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpp
c1NpemVBdmFpbGFibGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDVjMDA1
NTM0ZWNkOTIxMzRhMTNiMzI5NTg5Mjc3OTBmMDdhZDBmODEuLjRmN2UzMTc5ZTY2NjMzOGEzYTEx
NGIxYjIyYTFlMzQ5NDgzOTQ1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcApAQCAtNjQs
OCArNjQsMTEgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNpemUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHByb2Nlc3NJbmZvSGVhZGVyKCkgc2V0
IHRoZSBzaXplLCBzbyBpZiB0aGF0J3MgYWxsIHdlIG5lZWRlZCwgd2UncmUgZG9uZS4KLSAgICBp
ZiAob25seVNpemUpCisgICAgaWYgKG9ubHlTaXplKSB7CisgICAgICAgIGlmICghbV9pc1RvcERv
d24pCisgICAgICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9wYXJlbnQtPnNp
emUoKS5oZWlnaHQoKSAtIDEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICAv
LyBSZWFkIGFuZCBwcm9jZXNzIHRoZSBiaXRtYXNrcywgaWYgbmVlZGVkLgogICAgIGlmIChtX25l
ZWRUb1Byb2Nlc3NCaXRtYXNrcyAmJiAhcHJvY2Vzc0JpdG1hc2tzKCkpCkBAIC02MjQsNiArNjI3
LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc1JMRURhdGEoKQogCiAgICAgICAgICAg
ICAgICAgbV9kZWNvZGVkT2Zmc2V0ICs9IDI7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9jb29yZC55KCkpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtNzE3LDYgKzcyMSw3IEBAIEJNUEltYWdlUmVhZGVyOjpQcm9jZXNzaW5nUmVzdWx0
IEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YShib29sIGluUkxFLCBpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRDb21wb25lbnQocGl4ZWwsIDIpLCBhbHBoYSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXItPnNldExhc3REZWNvZGVkUm93KG1f
Y29vcmQueSgpKTsKIAogICAgICAgICAvLyBTdWNjZXNzLCBrZWVwIGdvaW5nLgogICAgICAgICBt
X2RlY29kZWRPZmZzZXQgKz0gcGFkZGVkTnVtQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDVmNjE5M2I4ZjllMWJhOTM3YjZlM2ZjNzMxNzQ5MjQzNGRhYWUyZGEuLjcxOThh
MTFjMWYxNTY4MDBjN2FiYjFmZmVhNDAxYjJjNzU5MDg1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxNCBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2
ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZgog
ICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHlCZWdpbiwgMCwgMCwgMCwgMCk7CiAg
ICAgICAgIH0KICAgICB9CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHlCZWdpbik7CiAK
ICAgICAvLyBUZWxsIHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cgZGF0YSBpZiBuZWVkIGJlLgot
ICAgIGlmIChyZXBlYXRDb3VudCA+IDEpCisgICAgaWYgKHJlcGVhdENvdW50ID4gMSkgewogICAg
ICAgICBidWZmZXIuY29weVJvd05UaW1lcyh4QmVnaW4sIHhFbmQsIHlCZWdpbiwgeUVuZCk7Cisg
ICAgICAgIEFTU0VSVCgoeUVuZCAtIDEpID49IDApOworICAgICAgICBidWZmZXIuc2V0TGFzdERl
Y29kZWRSb3coeUVuZCAtIDEpOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzkw
LDYgKzM5NCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWdu
ZWQgZnJhbWVJbmRleCkKICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IHByZXZSZWN0LnkoKTsg
eSA8IHByZXZSZWN0Lm1heFkoKTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4
ID0gcHJldlJlY3QueCgpOyB4IDwgcHJldlJlY3QubWF4WCgpOyArK3gpCiAgICAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyLT5zZXRSR0JBKHgsIHksIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
ICAgICAgYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICBpZiAoKHByZXZSZWN0LndpZHRoKCkgPiAwKSAmJiAocHJldlJlY3QuaGVpZ2h0
KCkgPiAwKSkKICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0SGFzQWxwaGEodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5MWYxMjM2YjM1OWJjMTU1YWYzN2M3
ZmUyY2UzNmVhNzNjNTA5NDk2Li40ODYxY2I2NjcyMzk3OGNiZGIzNzc4ZTBiMzc4MTk4ZWViOWIw
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU3Nyw2ICs1NzcsNyBA
QCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgaWYgKHR1cmJv
U3dpenpsZWQoaW5mby0+b3V0X2NvbG9yX3NwYWNlKSkgewogICAgICAgICBBU1NFUlQoIW1fc2Nh
bGVkKTsKICAgICAgICAgd2hpbGUgKGluZm8tPm91dHB1dF9zY2FubGluZSA8IGluZm8tPm91dHB1
dF9oZWlnaHQpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhpbmZvLT5v
dXRwdXRfc2NhbmxpbmUpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogcm93ID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyLmdldEFkZHIoMCwgaW5mby0+b3V0cHV0
X3NjYW5saW5lKSk7CiAgICAgICAgICAgICBpZiAoanBlZ19yZWFkX3NjYW5saW5lcyhpbmZvLCAm
cm93LCAxKSAhPSAxKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyOCw2ICs2
MjksNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Cisg
ICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhkZXN0WSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDEzOGQ1YzUxMjkxZWEy
NmY2OTY0M2Y2YWE0NDg4NGJiNWM2NDgwZWYuLjgxMGNhYTcyMDgyMTlmZmY2Y2Y2Mjk3NGU4ZWY3
ZWYxYjM0NTFiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01MjAsNiArNTIw
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiBy
b3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogCiAgICAgaWYgKG5vblRyaXZpYWxBbHBoYSAm
JiAhYnVmZmVyLmhhc0FscGhhKCkpCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShub25Ucml2
aWFsQWxwaGEpOworICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKIH0KIAogdm9pZCBQ
TkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEu
Y3BwCmluZGV4IDVjYzEzMmM0ZDQ4NDAwYjgxNTJlZTVmNGZlZjIyNDJjNDI5ZGI2YjYuLjEzMzE4
YTM4NDZmZjVhZWJkOTMwMmFkMzJlMTUzMjNkZDg3MzhjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURl
Y29kZXJTa2lhLmNwcApAQCAtNTcsNiArNTcsNyBAQCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpv
cGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFy
UGl4ZWxEYXRhKCkKIHsKICAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAgIG1fbGFz
dERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBOT1RF
OiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
KQogICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBm
dW5jdGlvbnMgbGlrZQpAQCAtNzYsNiArNzcsNyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogCiAgICAgbV9iaXRtYXAuYml0bWFwKCku
cmVzZXQoKTsKICAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFwID0gb3RoZXIu
bV9iaXRtYXA7CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IG90aGVyLm1fbGFzdERlY29kZWRSb3c7
CiAgICAgcmV0dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAuYml0bWFw
KCksIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKIH0KIApAQCAtODQsNiArODYsNyBA
QCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQog
ICAgIC8vIHNldFNpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVt
b3J5IG90aGVyd2lzZS4KICAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsKIAorICAg
IG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwogICAgIGlm
ICghbV9iaXRtYXAuYml0bWFwKCkuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDgyZTMzZGRiMmEzNjBlMzg4
OGQ3OWIwM2E5YzIxY2NkYjhjMDNjMi4uYTlmOThhZDgwZjZmMTk4MDU4ZDJhZmRlYmI2YTQwOWUy
M2FlNzlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsMTkgKzEz
MiwyNiBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAoV2ViUElV
cGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0ZXMsIGRhdGFTaXplKSkgewotICAgIGNhc2UgVlA4X1NU
QVRVU19PSzoKLSAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBs
ZXRlKTsKLSAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKLSAgICAgICAgbV9kZWNvZGVy
ID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBWUDhfU1RBVFVTX1NVU1BFTkRF
RDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6CisgICAgY29uc3QgVlA4U3Rh
dHVzQ29kZSBzdGF0dXMgPSBXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNp
emUpOworICAgIGlmIChzdGF0dXMgIT0gVlA4X1NUQVRVU19PSyAmJiBzdGF0dXMgIT0gVlA4X1NU
QVRVU19TVVNQRU5ERUQpIHsKICAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKICAgICAg
ICAgbV9kZWNvZGVyID0gMDsKICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KKyAg
ICBpbnQgbGFzdFkgPSAwOworICAgIGlmICghV2ViUElEZWNHZXRSR0IobV9kZWNvZGVyLCAmbGFz
dFksIDAsIDAsIDApKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgQVNTRVJUKGxh
c3RZID49IDApOworICAgIEFTU0VSVChsYXN0WSA8PSBzaXplKCkuaGVpZ2h0KCkpOworICAgIGJ1
ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhsYXN0WSA/IGxhc3RZIC0gMSA6IDApOworCisgICAgaWYg
KHN0YXR1cyA9PSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKKyAgICBX
ZWJQSURlbGV0ZShtX2RlY29kZXIpOworICAgIG1fZGVjb2RlciA9IDA7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCmluZGV4IDQ4ZWEwNTQ3MGRkZjA0YmQxMDQyZDVlYjMwYzE2YmZjZTc4
ZDNiMTQuLjhlNmI5NDhlZTZlNjhkM2FmZDAzZjY3MDg3ZjJhMTAzMjI0OGVlZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IHVzYWJsZVdpZHRo
ID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIExheW91dFVuaXQgdXNhYmxlSGVpZ2h0ID0gY0hl
aWdodCAtIDI7CiAKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSB0b1JldGFpbmVkTW9k
ZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCkuZ2V0KCkpOwog
CiAgICAgICAgICAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIWlt
YWdlLT5pc051bGwoKSAmJiB1c2FibGVXaWR0aCA+PSBpbWFnZS0+d2lkdGgoKSAmJiB1c2FibGVI
ZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvcihmcmFtZSgpKTsKQEAgLTMy
OCw3ICszMjgsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAgICAgIGlm
IChjZW50ZXJZIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7CiAgICAgICAg
ICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsg
Y2VudGVyWCArIDEsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAxKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCks
IGltYWdlU2l6ZSksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCAr
IGltYWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJh
d24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eW91dFJlY3QmIHJlY3QKICAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBt
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSB8fCBhbGlnbmVkUmVjdC53aWR0aCgpIDw9
IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPEltYWdlPiBpbWcgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKGFsaWduZWRSZWN0Lndp
ZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gdG9SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGlnbmVk
UmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCkpOwogICAgIGlmICghaW1n
IHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDUwLDcgKzQ1MCw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29t
cG9zaXRlU291cmNlT3ZlcjsKICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKCkuZ2V0KCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsK
LSAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGlnbmVkUmVj
dC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgYWxpZ25lZFJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltZywgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5l
Rmxvd0JveCopIGNvbnN0CkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBSZW5kZXJJbWFnZTo6YmFj
a2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdAogCiAgICAgLy8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFn
ZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
KS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5p
c0JpdG1hcEltYWdlKCkgfHwgdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSktPmN1cnJl
bnRGcmFtZUhhc0FscGhhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IDk4ODZmYjMxOTgyMzUzZDY0MDIzZjU3NGIwMGMxNGEyMGZiMWZjMmEu
LjljMzc0ZWY0YjRjNTRkM2NjMmI0YTUyYThhNWI4NGU5ZDhmYjc3YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAKICNpbmNsdWRlICJBbmltYXRp
b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgpAQCAtMTA3OSw4ICsxMDgwLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKCkKICAgICBpZiAoIWNhY2hlZEltYWdlLT5pc0xv
YWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhl
IGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKKyAgICBpZiAoaW1hZ2Ug
IT0gbV9jb21wb3NpdGVkSW1hZ2UpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byB3YWl0IHVudGls
IHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBsYXll
ci4KKyAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIXRvUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UoaW1hZ2UpLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBkZWNvZGVkQml0bWFwSW1hZ2UgPSBp
bWFnZTsKKyAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpIHsKKyAgICAgICAgICAg
IE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CisgICAgICAgICAgICBkZWNvZGVkQml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3Jl
YXRlKGltYWdlUHRyKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYg
dGhlIGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgorICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShkZWNvZGVkQml0bWFwSW1h
Z2UuZ2V0KCkpOworICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZSA9IGltYWdlOworICAgIH0KKwog
ICAgIHVwZGF0ZURyYXdzQ29udGVudCgpOwogICAgIAogICAgIC8vIEltYWdlIGFuaW1hdGlvbiBp
cyAibGF6eSIsIGluIHRoYXQgaXQgYXV0b21hdGljYWxseSBzdG9wcyB1bmxlc3Mgc29tZW9uZSBp
cyBkcmF3aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmgKaW5kZXggMGY0MmQzZmI5MWIxNzkzNTk3OWZkYjE4ZGJkMDZmY2E2OGZiYzg0Yy4uMDcyODBk
Y2I5NTQwNGEyMTAwNDVjMmNmMDI0OTgxMTFmZWRjNzk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMjQxLDYgKzI0MSw4IEBAIHByaXZh
dGU6CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJh
cjsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9sYXllckZvclNjcm9sbENvcm5lcjsKIAor
ICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1hZ2U7CisKICAgICBJbnRSZWN0IG1fY29t
cG9zaXRlZEJvdW5kczsKIAogICAgIGJvb2wgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kczsg
ICAgICAvLyBib3VuZHMgaGFkIHRvIGJlIG1hZGUgbm9uLXplcm8gdG8gbWFrZSB0cmFuc2Zvcm0t
b3JpZ2luIHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKaW5kZXggNTZiZTVjZDQxNmJjZGUyNmUwYTg1NWJlMWFkY2VhMmI0M2ZjMGI5NS4u
YTE5NmU3NWY4YTlkZjFhMjhkYzZlN2JhOTA1NGU5NmYxNTUxNTM4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNs
dWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaCIKQEAgLTEyNywxNCArMTI4LDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgICAgICBT
VkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQodGhpcywgY2hpbGRQYWludEluZm8p
OwogCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVk
KCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9pbWFnZVJlc291
cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IHRvUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9vYmplY3RCb3VuZGluZ0Jv
eDsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgo
KSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCog
aW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKICAg
ICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zv
cm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1Jl
Y3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW1hZ2VDRy5jcHAKaW5kZXggM2JhZWEyN2M5ZjU1NDgzYWYwNThhYWZiNjE4MTA3MmUy
NDRhMDZkMC4uY2RlMTM5ZmNlY2FlNTgzOGYzNjI1ZjljODc5OTBhMzc3MjEwOTQ2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
V2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdl
YlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1hZ2VGcmFtZURh
dGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAg
ICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdElu
ZGV4KGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZnJhbWUoQWRvcHRDRiwgaW1h
Z2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdl
YkltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcApp
bmRleCBmYjBkZjdjYWZmY2ExZmEwYjM3ZDZlNjNhOWVlMTcwODI4ODYwNjA1Li41ZDg2NGEyN2Jh
OTEwNjAwMzU5MjkxYTU3NmIyNDY0NmIwNTdlMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV2ViSW1hZ2UgV2ViSW1h
Z2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRlc2lyZWRT
aXplKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURh
dGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0
YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4KTsKICAg
ICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9IGFkb3B0UHRyKGltYWdlRnJhbWVEYXRh
Lm1fZnJhbWUpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJbWFnZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154507</attachid>
            <date>2012-07-25 18:21:38 -0700</date>
            <delta_ts>2012-07-27 00:55:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120726102105.patch</filename>
            <type>text/plain</type>
            <size>96140</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkZjhmOGM4ZjgxNWE3
Yjk3NTllMzFiOWU3MmY3N2RhZmY3MTJhYi4uZjgyYjY4NTE0YzcyMzZkNWM2MjI3NjYyZmJlZTJk
NzIyNDA5ODcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxMi0wNy0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9J
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0lt
YWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpsYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpzZXRMYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAo
V2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNr
Z3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAg
ICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQp
OgorCiAyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlZmFjdG9yaW5nIG1ldGFkYXRhIG9mIEJpdG1hcEltYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZTNhZjlkNjRhZTBmNmM2OWNlMjgzYjEyN2YyZDIyMWM4
N2U1NDY0Li41ZmEzYTRkZTYxN2VkYTYxOTliNGFmYmUyMTA0MTdmNjlkOTY3NTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA3LTE3ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBwYXJhbGxl
bCBpbWFnZSBkZWNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdXRob3JlZCBieSBIdWFuZyBEb25nc3VuZyBhbmQgS3dhbmcgWXVsIFNlby4KKwor
ICAgICAgICBNYWtlIGltYWdlIGRlY29kaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQg
dGhlIG1haW4gdGhyZWFkIGNhbiBzcGVuZCBtb3JlCisgICAgICAgIHRpbWUgaW4gbG9hZGluZywg
cGFyc2luZywgc2NyaXB0aW5nIGFuZCBsYXlvdXQgd2hpbGUgaW1hZ2UgZGVjb2RpbmcgdGhyZWFk
cyBkZWNvZGUKKyAgICAgICAgaW1hZ2VzIGluIHRoZSBiYWNrZ3JvdW5kLgorCisgICAgICAgIFJl
ZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L3B1Yj9pZD0xMmdmN01oTkhm
dXBlUjNHZFJGLWgyVnpnODZ2aUNid1hxOF9KQnlIS2xnMAorICAgICAgICBmb3IgZGV0YWlsZWQg
ZXhwbGFuYXRpb24uCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKKzIwMTItMDctMTcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgUHJl
cGFyZSBmb3IgcGFyYWxsZWwgaW1hZ2UgZGVjb2Rlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MWM4ZWUzZDAzMTk5MDY5OTM3MDQ4MjM1NDYwM2FkZDI3Njg3Y2I3Ni4uNmZhNGI0M2JhOWVhOWNl
YWQ0ZWQyMjNkOGQ4YzMzODBkODhkNmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OTks
MTAgKzE3OTksMTIgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRo
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjczMzQyZmZiMTljMWEw
NWQ5MjBmYjhmMDBiMTgxY2RhMjg2MmZlZC4uNmI1N2RmNmJhNzBiMTMxZGZlZGYyYzM5ZjNlMzRj
YzlkMjgxYWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zMjMxLDYgKzMy
MzEsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNp
b25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxl
bEltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJh
bGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQppbmRleCAzYmZjYTY1YzFmMGQ3OWZlOTZmMzQ5ZTkzODAzYzc3MGVhYjJlM2Q4
Li45OTJmNDBiYzNkYmQwMDlmMDUxNWE4MDIwZDE5MzIwMjZkZGM0YWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
QEAgLTk2OCwxMCArOTY4LDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwIFwKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUu
Y3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApAQCAtMjA5MSwxMSArMjA5MywxNCBAQCBI
RUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5o
IFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0
bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA2
OGM5NWFkMzI0ODY1YjMxYjViYTNjM2M2ZThhNGYzMmY3NmE5MmEuLjBkNDYwNWM2M2YwMTNjZGE0
NGM0ZjZkZWIxYzBiOTZmMmI3NGFjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MjgsMTEgKzM1
MjgsMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVk
TW9kZUJpdG1hcEltYWdlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUmV0
YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Um91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50
ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRl
ZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCA3ODdjNDdiMTdkMmIzZWNhN2VkMjQzNzU4YTJkMmY4M2I4ODdiYTI1Li5kOGRl
ZDBhZmMwMDZiNjk5OTY1YWZmZTYwYmU3MDdmMjQ5N2Y0MjA2IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk1NDYsNiArMjk1NDYsMTggQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXJhbGxlbEltYWdlRGVj
b2Rlck9ic2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXRoVHJhdmVyc2FsU3RhdGUuY3BwIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjk1NzQsNiArMjk1ODYsMTQgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzQ2NDY4ODUzNzkxNDEyYzZhZTcxZmQxZTEwZjM3ZDBmMmI2
MmVhNS4uNGU0NGMzNWFhZWE1NGI5ZDRiMmY2ZWVlZWVkYTU0YzExYzBkNzM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQy
NSw2ICsxNDI1LDggQEAKIAkJNEIzMDQzQ0QwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEIzMDQzQ0IwQUUw
MzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJj
ZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gKi87IH07CiAJ
CTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjM0ODA5MjBFRUY1MEQ0MDBBQzFC
NDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OworCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEg
LyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlLmNwcCAqLzsgfTsKKwkJNUIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8q
IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJNEI2RkE2RjQwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0
UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCNkZBNkY1MEMzOUU0OEMwMDA4
NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5j
cHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjZGQTZG
NjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovOyB9OwpAQCAtODUzNiw2
ICs4NTM4LDggQEAKIAkJNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW1hZ2VTb3VyY2VD
R01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIzNDgwOTIwRUVGNTBENDAw
QUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjM0ODA5MjBFRUY1MEQ0MDBBQzFC
NDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydFJlcGxhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjMwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydFJlcGxhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZGQTZGNjBDMzlFNEExMDAwODcw
MTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTk2MDgsNiArMTk2MTIsOCBAQAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0
ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVu
dEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1l
bnRJbWFnZS5oICovLAorCQkJCTVCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJCQkJNUIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlLmggKi8sCiAJCQkJQjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRG
IC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBjZzsK
QEAgLTI0NTcwLDYgKzI0NTc2LDcgQEAKIAkJCQk3RUU2ODQ2RjEyRDI2RTM4MDBFNzk0MTUgLyog
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDcwMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRD
NzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTUxMkIwMjZGNzAwQzFBMzU5IC8qIFJl
dmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTcxMkIwMjZGNzAwQzFBMzU5IC8qIFJl
dmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTkxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzc1
NSw2ICsyNzc2Miw3IEBACiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
UmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFRTY4NDcxMTJEMjZFMzgwMEU3
OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQTQxMkIwMjZGNzAwQzFBMzU5IC8q
IFJldmVyYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBBNjEyQjAyNkY3MDBDMUEzNTkg
LyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2
MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
aW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0ZDRjNjE5OTEzZDFiMzQ2OTAzNGJjZC4uODAzZTI5ZDE0
MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2MGM0ODFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjQsNiArNjQsNyBAQCBCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3Np
emVBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAg
ICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNl
KQogewogfQogCkBAIC0yMDgsNyArMjA5LDEyIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBOT1RFOiBEb24ndCBjYWxsIGZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBoZXJlLCB0aGF0IHdpbGwgdHJ5IHRvCiAgICAgICAgIC8v
IGRlY29kZSBhbnkgdW5jYWNoZWQgKGkuZS4gbmV2ZXItZGVjb2RlZCBvcgogICAgICAgICAvLyBj
bGVhcmVkLW9uLWEtcHJldmlvdXMtcGFzcykgZnJhbWVzIQotICAgICAgICBpZiAobV9mcmFtZXNb
aV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBsZXRlKQorCisgICAgICAgIC8vIE5P
VEU6IERvbid0IGNsZWFyIHRoZSBjdXJyZW50IGZyYW1lLCBiZWNhdXNlIHRoZSBmcmFtZSBtaWdo
dCBoYXZlIGJlZW4gZGVjb2RlZAorICAgICAgICAvLyBpbiByZXRhaW5lZCBtb2RlIGFuZCBSZW5k
ZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRoaXMgZGVjb2RlZCBpbWFnZSB5ZXQuCisgICAgICAgIC8v
IElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIHJlbW92ZWQgaGVyZSwgdGhlIGltYWdlIGVsZW1lbnQg
d2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0ZSBib3guCisgICAgICAgIC8vIFRoZSBjdXJyZW50IGZy
YW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHJldGFpbmVkIG1vZGUgZGVjb2RpbmcgaXMg
ZmluaXNoZWQuCisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2ZyYW1lICYmICFtX2ZyYW1lc1tp
XS5tX2lzQ29tcGxldGUgJiYgbV9jdXJyZW50RnJhbWUgIT0gaSkKICAgICAgICAgICAgIGZyYW1l
c0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRydWUpID8gMSA6IDApOwogICAgIH0KICAg
ICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVzQ2xlYXJlZCk7CkBAIC0yNTYsOCArMjYy
LDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4
KQogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKQorICAgIGlmIChtX2lzQ2FjaGluZ0ZyYW1lKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIC8vIG1fZnJhbWUgY2FuIGV4aXN0IHdoZW4gbV9pc0NvbXBsZXRlIGlzIGZhbHNlLCBz
byB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3IGZyYW1lIGV2ZW4gaWYgbV9mcmFtZSBleGlzdHMuCisg
ICAgLy8gU2VlIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCBmb3IgZXhwbGFuYXRpb24uCisgICAg
Ym9vbCBuZWVkVG9DYWNoZSA9IGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNb
aW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2lzQ29tcGxldGU7CisgICAgaWYg
KG5lZWRUb0NhY2hlKSB7CisgICAgICAgIG1faXNDYWNoaW5nRnJhbWUgPSB0cnVlOwogICAgICAg
ICBjYWNoZUZyYW1lKGluZGV4KTsKKyAgICAgICAgbV9pc0NhY2hpbmdGcmFtZSA9IGZhbHNlOwor
ICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjcsMTEgKzI4MywyNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkKICAgICBpZiAobV9mcmFtZXMu
c2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAK
LSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBtX3NvdXJjZS5y
ZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4LCByZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSk7CiB9CiAK
LXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCitib29sIEJpdG1hcEltYWdlOjpy
ZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdAogeworICAgIHJldHVybiBtX3JldGFpbmVkTW9k
ZUltYWdlLmdldCgpICYmIG1fcmV0YWluZWRNb2RlSW1hZ2UtPnJldGFpbmVkTW9kZVJlbmRlcmlu
ZygpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhLCBib29sIHJldGFp
bmVkLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkKQoreworICAgIC8vIEl0IGlzIHBvc3Np
YmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBpbmRpcmVjdGx5IGluIHRoaXMgbWV0aG9kLgorICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKG1fcmV0YWluZWRNb2RlSW1hZ2UuZ2V0
KCksIHJldGFpbmVkKTsKKworICAgIC8vIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lIG11c3QgYmUg
Y2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVwbGFjZWQgd2l0aCBuZXcgZGVjb2RlZCBmcmFtZS4KKyAg
ICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xlYXIgbV9mcmFtZSwgdGhlIG9sZCBtX2ZyYW1lIGxlYWtz
LgorICAgIC8vIFNlZSBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQgZm9yIGV4cGxhbmF0aW9uIHdo
eSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0IGJlIHJlbW92ZWQgaGVyZS4KKyAgICBpbnQgZnJhbWVz
Q2xlYXJlZCA9IDA7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBm
cmFtZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSkgPyAxIDogMCk7Cisg
ICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lc0NsZWFyZWQpOworCiAgICAgbV9mcmFt
ZXNbaW5kZXhdLnNldEZyb21JbWFnZUZyYW1lRGF0YShpbWFnZUZyYW1lRGF0YSk7CiAKICAgICBz
aXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwpAQCAtMjg4LDggKzMyMCwxMiBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qg
SW1hZ2VGcmFtZURhdGEmIGltYQogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVy
dGllcy4KICAgICAgICAgZGVsdGFCeXRlcyAtPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAg
ICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAwOwotICAgICAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQorICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKSB7CiAgICAgICAgICAgICBpbWFn
ZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0aGlzLCBkZWx0YUJ5dGVzKTsKKworICAg
ICAgICAgICAgaWYgKChtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlICYmIHJldGFpbmVkKSB8
fCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCkKKyAgICAgICAgICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmNoYW5nZWRJblJlY3QodGhpcywgSW50UmVjdChJbnRQb2ludCgpLCBzaXplKCkpKTsKKyAg
ICAgICAgfQogICAgIH0KIH0KIApAQCAtMzA5LDcgKzM0NSwxMyBAQCBib29sIEJpdG1hcEltYWdl
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyAoc2VlIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFtZUR1cmF0aW9uQXRJbmRleCgpKQogICAgIGlmICghZW5z
dXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKKyAgICAvLyBJZiB0aGUgZnJhbWUgYXQg
dGhlIGdpdmVuIGluZGV4IGlzIGRlY29kZWQgYnkgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIG1f
ZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBtX2lzQ29tcGxldGUgaXMgdHJ1ZS4KKyAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsK
K30KKworYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSgpCit7CisgICAg
cmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogfQogCiBmbG9h
dCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggODE3NzI3
M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2NjlhMDUxMjFiNS4uYzRkNTZmNzVlNTI3NTVmNDA1MDRi
ODhkZTc3ZWJhNjllNDBiOWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCIKIAogI2lmIFBM
QVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMjAsMTAgKzEyMSwx
MiBAQCBwcml2YXRlOgogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQogCiBjbGFzcyBCaXRtYXBJbWFnZSA6IHB1YmxpYyBJbWFnZSwgcHVibGljIElt
YWdlU291cmNlT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNz
IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5l
cmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OworICAgIGZyaWVu
ZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFn
ZSopOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUo
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkK
ICAgICB7CkBAIC0xOTIsNiArMTk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCk7CiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhh
KCk7CisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCk7CiAKICAgICBJbWFnZU9yaWVu
dGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBm
cmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwpAQCAtMjAxLDcgKzIwNSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VPYnNlcnZlcgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNvbnN0IElt
YWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZhbHNlLCBib29sIHBhcmFsbGVsRGVjb2Rl
ckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2l6ZSgpIGNv
bnN0OwpAQCAtMjkzLDYgKzI5Nyw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgbWF5
RmlsbFdpdGhTb2xpZENvbG9yKCk7CiAgICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29u
c3Q7CiAgICAgCisgICAgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdDsKKwogICAg
IEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7IC8vIFRo
ZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdpbGwganVzdCBiZSB0aGUgc2l6
ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0
aW5nT3JpZW50YXRpb247CkBAIC0zMTcsNiArMzIzLDggQEAgcHJvdGVjdGVkOgogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1NpemU7IC8vIFRoZSBzaXplIG9mIGRhdGEg
ZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWluZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcu
IHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNpemVfdCBtX2ZyYW1lQ291bnQ7CiAKKyAg
ICBSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IG1fcmV0YWluZWRNb2RlSW1hZ2U7CisK
ICAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgYXJlIGEg
MXgxIHNvbGlkIGltYWdlLgogICAgIGJvb2wgbV9jaGVja2VkRm9yU29saWRDb2xvciA6IDE7IC8v
IFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUgZm9yIHNvbGlkIGNvbG9yLgogCkBAIC0z
MjcsNiArMzM1LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIDogMTsg
Ly8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1h
Z2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KICAgICBtdXRhYmxlIGJvb2wgbV9oYXNVbmlmb3Jt
RnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlRnJhbWVDb3VudCA6IDE7CisK
KyAgICBib29sIG1faXNDYWNoaW5nRnJhbWUgOiAxOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDAyMDMzNGVjZmRk
NTZjZWRhNDZlN2FhOWUzMjFlZWYxNTkyZDQzOTEuLjczYjU5M2Y2NTM1MTQ3NzU4NzM3ZTk0ZDVm
ZDUxNzVhNThiY2MyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM1LDkgKzM1LDEzIEBACiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisjaW5j
bHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0
aWMgY29uc3QgaW50IHNfcmVzb2x1dGlvblRocmVzaG9sZEZvclBhcmFsbGVsID0gMzAwICogMzAw
OworCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKIHVuc2lnbmVkIElt
YWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9IDEwMjQgKiAxMDI0OwogI2Vu
ZGlmCkBAIC02NiwxMSArNzAsMTUgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB2b2lk
IEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjbGVhckJlZm9yZUZy
YW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlm
ICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICAvLyBPbmx5
IEdJRiBkZWNvZGVyIGltcGxlbWVudHMgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlLgorICAgICAgICBp
ZiAobV9kZWNvZGVyICYmICFtX3BhcmFsbGVsRGVjb2RlcikKICAgICAgICAgICAgIG1fZGVjb2Rl
ci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJhbWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICBj
bGVhclBhcmFsbGVsRGVjb2RlcigpOworCiAgICAgZGVsZXRlIG1fZGVjb2RlcjsKICAgICBtX2Rl
Y29kZXIgPSAwOwogICAgIGlmIChkYXRhKQpAQCAtODgsNiArOTYsMTMgQEAgdm9pZCBJbWFnZVNv
dXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0YSBhbmQgaW5zdGFudGlhdGUg
YW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIgcGx1Z2luLgogICAgIC8vIElm
IGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgaW1hZ2Ug
dHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8vIG1hZGUuCisKKyAgICBpZiAo
bV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fZGVjb2Rlcik7Cisg
ICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5zZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAg
ICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZVNvdXJjZVB0cj4oSW1hZ2VEZWNv
ZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQpAQCAtMTAy
LDExICsxMTcsMTUgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKICAg
ICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3Ry
aW5nKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCiB7CisgICAg
aWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBy
ZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKQEAg
LTExNiw2ICsxMzUsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpzaXplKFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50YXRpb24pCiAgICAgaWYgKHNob3VsZFJl
c3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVjb2Rlci5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAgICAgcmV0dXJuIG1fZGVjb2Rl
ciA/IG1fZGVjb2Rlci0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQogCkBAIC0xMjUsNiArMTQ2LDgg
QEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmIChzaG91bGRSZXNwZWN0T3JpZW50YXRp
b24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
CiAKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3Bh
cmFsbGVsRGVjb2Rlci0+c2l6ZSgpOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXIt
PmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogSW50U2l6ZSgpOwogfQogCkBAIC0xNDAsMjMgKzE2
MywxMjAgQEAgc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Cisg
ICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICByZXR1cm4gY0FuaW1hdGlv
bk5vbmU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50
KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAogc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50
KCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJl
dHVybiAxOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6
IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZykKK3sKKyAgICBBU1NFUlQoIShy
ZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgaW5kZXgpKTsKKyAgICBBU1NFUlQoIShyZXRhaW5lZE1v
ZGVSZW5kZXJpbmcgJiYgIW1fb2JzZXJ2ZXIpKTsKKworICAgIGlmICghbV9kZWNvZGVyKSB7Cisg
ICAgICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIEltYWdlRnJh
bWVEYXRhKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURhdGEoKTsKKyAgICB9CisKKyAg
ICBpZiAoIXJldGFpbmVkTW9kZVJlbmRlcmluZyB8fCAhbV9vYnNlcnZlciB8fCBmaXJzdEZyYW1l
SXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm4gc2VyaWFsRGVjb2RlKGluZGV4KTsKKworICAg
IGlmIChzaG91bGREZWNvZGVQYXJhbGxlbCgpKSB7CisgICAgICAgIHBhcmFsbGVsRGVjb2RlKCk7
CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YSgpOworICAgIH0KKworICAgIHJldHVybiBz
ZXJpYWxEZWNvZGUoaW5kZXgpOworfQorCitib29sIEltYWdlU291cmNlOjpzaG91bGREZWNvZGVQ
YXJhbGxlbCgpCit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisKKyAgICBpZiAobV9wYXJhbGxl
bERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKFdURjo6bnVt
YmVyT2ZQcm9jZXNzb3JDb3JlcygpID09IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFN0cmluZyBmaWxlRXh0ID0gZmlsZW5hbWVFeHRlbnNpb24oKTsKKyAgICBpZiAoZmlsZUV4dCA9
PSAiaWNvIiB8fCBmaWxlRXh0ID09ICJnaWYiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoc2l6ZSgpLmFyZWEoKSA8IHNfcmVzb2x1dGlvblRocmVzaG9sZEZvclBhcmFsbGVsKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBJbWFnZVNv
dXJjZTo6Zmlyc3RGcmFtZUlzQ29tcGxldGUoKQoreworICAgIEFTU0VSVChtX2RlY29kZXIpOwor
ICAgIEltYWdlRnJhbWUqIGltYWdlRnJhbWUgPSAwOworICAgIGlmICghbV9wYXJhbGxlbERlY29k
ZXIpCisgICAgICAgIGltYWdlRnJhbWUgPSBtX2RlY29kZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhv
dXREZWNvZGUoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZSAmJiBmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KGltYWdlRnJhbWUpOworfQorCit2b2lkIEltYWdlU291cmNlOjpwYXJhbGxlbERlY29kZSgp
Cit7CisgICAgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKTsKKyAgICBtX3BhcmFsbGVs
RGVjb2Rlci0+ZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1hZ2VTb3VyY2U6OmRpZERlY29kZShjb25z
dCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKG1fb2JzZXJ2
ZXIpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoMCwgaW1hZ2VGcmFt
ZURhdGEsIHRydWUpOworCisgICAgaWYgKGltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKKyAg
ICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKK30KKwordm9pZCBJbWFnZVNvdXJjZTo6Y3Jl
YXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKQoreworICAgIGlmICghbV9wYXJhbGxlbERlY29k
ZXIpCisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyID0gYWRvcHRSZWYobmV3IFBhcmFsbGVsSW1h
Z2VEZWNvZGVyKHRoaXMsIG1fZGVjb2RlcikpOworfQorCit2b2lkIEltYWdlU291cmNlOjpjbGVh
clBhcmFsbGVsRGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIG1fcGFy
YWxsZWxEZWNvZGVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9wYXJhbGxlbERlY29kZXIuY2xlYXIo
KTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnNlcmlhbERlY29kZShzaXplX3Qg
aW5kZXgpCit7CisgICAgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IGZhbHNlOworICAg
IC8vIFJlbmRlckltYWdlIGFuZCBDYW52YXNFbGVtZW50IGNhbiBzaGFyZSB0aGUgc2FtZSBDYWNo
ZWRJbWFnZS4KKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNT
RVJUKG1fb2JzZXJ2ZXIpOworICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOworICAgICAg
ICBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IHRydWU7CisgICAgfQorCiAgICAgSW1hZ2VGcmFt
ZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOwotICAgIG1f
b2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVEYXRhKTsK
KworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2VydmVyLT5kaWRSZWNlaXZlRnJh
bWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSwgZmFsc2UgLyogcmV0YWluZWRNb2RlICov
LCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCk7CisKKyAgICByZXR1cm4gaW1hZ2VGcmFtZURhdGE7
CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogeworICAgIEFTU0VSVCghbV9wYXJhbGxlbERlY29kZXIpOwogICAgIGlmICgh
bV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURhdGEoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggMmU2NGQ3ZGVh
NzM3MzRlN2Y3MDhhZjYwZDI5YTMxYjg0MTJmMTgwOS4uYzQyNzllYzlmY2FkZDQzNDI1ZDMzMmJk
ZDgzOWJiNTVjYzUyNGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCkBAIC0yOSw2ICsyOSw5IEBACiAjZGVmaW5lIEltYWdlU291cmNlX2gK
IAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpZiAhVVNFKENHKQorI2luY2x1ZGUg
IlBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIKKyNlbmRpZgogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTY1LDYgKzY4LDkg
QEAgY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIGNsYXNzIEltYWdlU291cmNlT2JzZXJ2ZXI7CiBj
bGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CisjaWYgIVVTRShDRykKK2NsYXNzIFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOworI2VuZGlmCiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKICNpZiBVU0Uo
Q0cpCkBAIC0xNDMsNyArMTQ5LDExIEBAIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAw
OwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5p
bWF0aW9uTm9uZSA9IC0yOwogCi1jbGFzcyBJbWFnZVNvdXJjZSB7CitjbGFzcyBJbWFnZVNvdXJj
ZQorI2lmICFVU0UoQ0cpCisgICAgOiBwdWJsaWMgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZl
cgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogcHVi
bGljOgogICAgIGVudW0gQWxwaGFPcHRpb24gewpAQCAtMjEwLDE3ICsyMjAsMjQgQEAgcHVibGlj
OgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKIAotICAgIC8vIENhbGxlcnMgc2hv
dWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5k
ZXg7CisgICAgLy8gTk9URTogQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxs
aW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24g
Y2xlYXIoKSBhYm92ZS4KLSAgICB2b2lkIHJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90KTsKLSAg
ICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICAvLyBOT1RF
OiBJZiBJbWFnZVNvdXJjZSBoYXMgSW1hZ2VTb3VyY2VPYnNlcnZlciwgdGhpcyBtZXRob2Qgc2Vu
ZHMgdGhlIHJlc3VsdCB2aWEgZGlkRGVjb2RlKCkuCisgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIG1l
dGhvZCByZXR1cm5zIHRoZSByZXN1bHQuIGUuZy4gR3JhcGhpY3NDb250ZXh0M0QKKyAgICBJbWFn
ZUZyYW1lRGF0YSByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCwgYm9vbCByZXRhaW5lZE1vZGVS
ZW5kZXJpbmcgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBM
SU5HKQogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UoKSB7IHJl
dHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQogICAgIHN0YXRpYyB2b2lkIHNldE1h
eFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhlbHMpIHsgc19tYXhQaXhlbHNQ
ZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KICNlbmRpZgogCisjaWYgIVVTRShDRykKKyAg
ICAvLyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIGRpZERl
Y29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpOworI2VuZGlmCisKIHByaXZhdGU6CisgICAgSW1h
Z2VGcmFtZURhdGEgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CiAjaWYgVVNFKENHKQogICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkg
dXNlZCBhbnkgYWxwaGEuCkBAIC0yMzMsOCArMjUwLDIwIEBAIHByaXZhdGU6CiAgICAgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFtZSopIGNvbnN0OwogI2VuZGlm
CiAKKyNpZiAhVVNFKENHKQorICAgIHZvaWQgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQo
KTsKKyAgICB2b2lkIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7CisgICAgYm9vbCBzaG91bGREZWNv
ZGVQYXJhbGxlbCgpOworICAgIGJvb2wgZmlyc3RGcmFtZUlzQ29tcGxldGUoKTsKKyAgICB2b2lk
IHBhcmFsbGVsRGVjb2RlKCk7CisgICAgSW1hZ2VGcmFtZURhdGEgc2VyaWFsRGVjb2RlKHNpemVf
dCk7CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IG1fcGFyYWxsZWxEZWNvZGVy
OworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBtX2RlY29kZXI7CiAgICAgSW1h
Z2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKKwogICAgIEFscGhhT3B0aW9uIG1fYWxwaGFP
cHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9nYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNl
cnZlci5oCmluZGV4IDcyYWY3MDhjN2VjZDExZjgxNmU4YThlMDI3MjkwMjYwNjA4MjE0MjguLmQz
MjA3ODJkOGU4MzBjMDRlOTlmMDFlMTQzZmQyOWE5NGE4MzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmgKQEAg
LTMzLDcgKzMzLDcgQEAgY2xhc3MgSW1hZ2VGcmFtZURhdGE7CiAvLyBJbnRlcmZhY2UgZm9yIG5v
dGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIEltYWdlU291cmNlLCBpbmNsdWRpbmcgZGVj
b2RpbmcuCiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRh
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwg
Y29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0gZmFsc2UsIGJvb2wgcGFyYWxs
ZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+SW1hZ2VTb3VyY2VPYnNlcnZlcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiOWNmYWY1NTMxMTM3ODQ1MGQzMzE0NjQyZWQxYzg4MzY5NDdhNWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rl
ci5jcHAKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFu
eSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rlci5oIgorCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFBhcmFsbGVs
RnJhbWVEYXRhOwordm9pZCBkaWREZWNvZGVUYXNrQ2FsbGJhY2soUGFyYWxsZWxGcmFtZURhdGEq
KTsKK3N0YXRpYyBJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFnZUZyYW1lRGF0YShQYXJhbGxlbEZy
YW1lRGF0YSopOworCitQYXJhbGxlbEltYWdlRGVjb2Rlcjo6UGFyYWxsZWxJbWFnZURlY29kZXIo
UGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciogb2JzZXJ2ZXIsIEltYWdlRGVjb2RlciogZGVj
b2RlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2lzQWxsRGF0YVJlY2Vp
dmVkKGZhbHNlKQorICAgICwgbV9ieXRlc09mRGF0YUNvbnN1bWVkKDApCisgICAgLCBtX2ltYWdl
RGVjb2RlcigwKQoreworICAgIGluaXRpYWxpemUoZGVjb2Rlcik7Cit9CisKK1BhcmFsbGVsSW1h
Z2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29kZXIoKQoreworICAgIEFTU0VSVCghdmFsaWQo
KSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUoSW1hZ2VEZWNv
ZGVyKiBkZWNvZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGRlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpICYmICFkZWNvZGVyLT5zaXplKCkuaXNFbXB0eSgp
KTsKKworICAgIG1fc2l6ZSA9IGRlY29kZXItPnNpemUoKTsKKyAgICBtX2ZpbGVuYW1lRXh0ZW5z
aW9uID0gZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKKworICAgIHNldERhdGEoZGVjb2Rl
ci0+ZGF0YSgpLCBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgpKTsKKyAgICBtX2J5dGVzT2ZE
YXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZyYW1lLnNldFNpemUobV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX2ltYWdlRGVjb2RlciA9IGRlY29kZXI7Cisg
ICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOworICAgIC8vIEFmdGVyIHRoaXMg
bGluZSwgaXQgaXMgaWxsZWdhbCBmb3IgdGhlIG1haW4gdGhyZWFkIHRvIGFjY2VzcyBtX2ltYWdl
RGVjb2Rlci4KKworICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgbGFzdCBsaW5lIGJlY2F1c2UgSW1h
Z2VEZWNvZGVXb3JrZXIgZ3VhcmFudGVlcworICAgIC8vIHRoZSB2aXNpYmlsaXR5IG9mIG1lbWJl
cnMgaW4gdGhlIHRhc2sgdGhyZWFkLgorICAgIG1fZGVjb2RlV29ya2VyID0gSW1hZ2VEZWNvZGVX
b3JrZXI6OmFjcXVpcmVTaGFyZWRXb3JrZXIoKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgaWYgKG1fZGVjb2RlV29ya2VyLmdldCgpKSB7
CisgICAgICAgIG1fZGVjb2RlV29ya2VyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fZGVjb2Rl
V29ya2VyLmNsZWFyKCk7CisgICAgfQorICAgIC8vIFRoZSBtYWluIHRocmVhZCBjYW4gdXNlIG1f
aW1hZ2VEZWNvZGVyIGJlY2F1c2Ugb3RoZXIgdGhyZWFkcyBkbyBub3QgYWNjZXNzIG1faW1hZ2VE
ZWNvZGVyIGFmdGVyIHRoaXMgbGluZS4KKworICAgIG1faW1hZ2VEZWNvZGVyLT5zZXREYXRhKG1f
ZGF0YS5nZXQoKSwgbV9pc0FsbERhdGFSZWNlaXZlZCk7CisKKyAgICBtX3NpemUgPSBJbnRTaXpl
KCk7CisgICAgbV9maWxlbmFtZUV4dGVuc2lvbiA9ICIiOworCisgICAgbV9pc0FsbERhdGFSZWNl
aXZlZCA9IGZhbHNlOworICAgIG1fZGF0YS5jbGVhcigpOworICAgIG1fYnl0ZXNPZkRhdGFDb25z
dW1lZCA9IDA7CisKKyAgICBtX2ltYWdlRnJhbWUgPSBJbWFnZUZyYW1lKCk7CisKKyAgICBpZiAo
bV9kYXRhRm9yVGFzay5nZXQoKSkKKyAgICAgICAgbV9kYXRhRm9yVGFzay5jbGVhcigpOworCisg
ICAgbV9pbWFnZURlY29kZXIgPSAwOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0
YVJlY2VpdmVkOworICAgIG1fZGF0YSA9IGRhdGE7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURl
Y29kZXI6OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQobV9pbWFnZURlY29kZXIpOworICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHkoKSk7CisKKyAg
ICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50ID0gZXh0cmFjdFNlZ21lbnRGb3JU
YXNrKCk7CisgICAgaWYgKCFzZWdtZW50LmdldCgpKQorICAgICAgICByZXR1cm47CisgICAgbV9k
ZWNvZGVXb3JrZXItPnBvc3RUYXNrKGJpbmQoJlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkZWNvZGVU
YXNrLCB0aGlzLCBzZWdtZW50LnJlbGVhc2UoKSkpOworfQorCitQYXNzT3duUHRyPFBhcmFsbGVs
SW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ+IFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpl
eHRyYWN0U2VnbWVudEZvclRhc2soKQoreworICAgIEFTU0VSVChtX2J5dGVzT2ZEYXRhQ29uc3Vt
ZWQgPj0gMCAmJiBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPD0gbV9kYXRhLT5zaXplKCkpOworCisg
ICAgaW50IHNpemVPZlNlZ21lbnQgPSBtX2RhdGEtPnNpemUoKSAtIG1fYnl0ZXNPZkRhdGFDb25z
dW1lZDsKKyAgICBpZiAoIXNpemVPZlNlZ21lbnQpCisgICAgICAgIHJldHVybiBQYXNzT3duUHRy
PEVuY29kZWREYXRhU2VnbWVudD4oKTsKKworICAgIE93blB0cjxFbmNvZGVkRGF0YVNlZ21lbnQ+
IHNlZ21lbnQoYWRvcHRQdHIobmV3IEVuY29kZWREYXRhU2VnbWVudCgpKSk7CisgICAgY29uc3Qg
Y2hhciogc3JjUHRyID0gbV9kYXRhLT5kYXRhKCkgKyBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7Cisg
ICAgc2VnbWVudC0+bV9zZWdtZW50LmFwcGVuZChzcmNQdHIsIHNpemVPZlNlZ21lbnQpOworICAg
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IG1fZGF0YS0+c2l6ZSgpOworCisgICAgc2VnbWVudC0+
bV9pc0FsbERhdGFSZWNlaXZlZCA9IG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisKKyAgICByZXR1cm4g
c2VnbWVudC5yZWxlYXNlKCk7Cit9CisKK3N0cnVjdCBQYXJhbGxlbEZyYW1lRGF0YSB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyYWxsZWxGcmFtZURhdGEpOworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFBhcmFsbGVsRnJhbWVEYXRhKFBh
c3NSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IHBhcmFsbGVsRGVjb2RlcikKKyAgICAgICAg
OiBtX3BhcmFsbGVsRGVjb2RlcihwYXJhbGxlbERlY29kZXIpCisgICAgICAgICwgbV9kZWNvZGVk
U2VnbWVudCgpCisgICAgICAgICwgbV9zdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKKyAg
ICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAgICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0
cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB+UGFyYWxsZWxGcmFtZURhdGEoKQorICAgIHsKKyAg
ICB9CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IG1fcGFyYWxsZWxEZWNvZGVy
OworICAgIE93bkFycmF5UHRyPEltYWdlRnJhbWU6OlBpeGVsRGF0YT4gbV9kZWNvZGVkU2VnbWVu
dDsKKyAgICBJbWFnZUZyYW1lOjpGcmFtZVN0YXR1cyBtX3N0YXR1czsKKyAgICBib29sIG1faGFz
QWxwaGE7CisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CisgICAgSW50UmVjdCBtX2RlY29k
ZWRSZWN0OworfTsKKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGVjb2RlVGFzayhQYXNz
T3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ+IHBhc3NTZWdt
ZW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2ltYWdl
RGVjb2Rlcik7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50ID0gcGFz
c1NlZ21lbnQ7CisKKyAgICAvLyAxLiBTZW5kIHNlZ21lbnQgZGF0YSB0byBJbWFnZURlY29kZXIu
CisgICAgaWYgKCFtX2RhdGFGb3JUYXNrKSB7CisgICAgICAgIG1fZGF0YUZvclRhc2sgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgLy8gVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllciBkb2VzIG5vdCBhbGxvdyB0d28gdGhyZWFkcyB0byBhY2Nlc3Mgb25l
IFJlZkNvdW50ZWQgb2JqZWN0LgorICAgICAgICAvLyBtX2RhdGFGb3JUYXNrIGlzIHVzZWQgYnkg
Ym90aCB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSB0YXNrIHRocmVhZDoKKyAgICAgICAgLy8gVGhl
IHRhc2sgdGhyZWFkIGNyZWF0ZXMsIHVzZXMgYW5kIHJlbW92ZXMgbV9kYXRhRm9yVGFzay4gVGhl
IG1haW4gdGhyZWFkIG1heSByZW1vdmUKKyAgICAgICAgLy8gbV9kYXRhRm9yVGFzayBpZiB0aGUg
dGFzayB0aHJlYWQgY291bGQgbm90IHJlbW92ZSBtX2RhdGFGb3JUYXNrLgorICAgICAgICAvLwor
ICAgICAgICAvLyBQYXJhbGxlbCBpbWFnZSBkZWNvZGVycyBtYW5hZ2UgbV9kYXRhRm9yVGFzayBp
biBhIHRocmVhZC1zYWZlIHdheS4gSG93ZXZlciwKKyAgICAgICAgLy8gd2UgY2FuJ3QgdGVsbCB0
aGUgdmVyaWZpZXIgdGhhdCB3ZSBhcmUgc2FmZSBieSBzaW1wbHkgcGFzc2luZyBhIG11dGV4Cisg
ICAgICAgIC8vIGJlY2F1c2UgbGliZGlzcGF0Y2ggZG9lcyBub3QgZXZlbiBndWFyYW50ZWUgZGVj
b2RlVGFzayBpcyBjYWxsZWQgYnkgdGhlIHNhbWUgdGhyZWFkCisgICAgICAgIC8vIGVhY2ggdGlt
ZS4gU28gdHVybiBvZmYgdGhlIHZlcmlmaWVyIGhlcmUuCisgICAgICAgIG1fZGF0YUZvclRhc2st
PnR1cm5PZmZWZXJpZmllcigpOworI2VuZGlmCisgICAgfQorICAgIG1fZGF0YUZvclRhc2stPmFw
cGVuZChzZWdtZW50LT5tX3NlZ21lbnQpOworICAgIG1faW1hZ2VEZWNvZGVyLT5zZXREYXRhKG1f
ZGF0YUZvclRhc2suZ2V0KCksIHNlZ21lbnQtPm1faXNBbGxEYXRhUmVjZWl2ZWQpOworCisgICAg
SW1hZ2VGcmFtZSogb2xkQnVmZmVyID0gbV9pbWFnZURlY29kZXItPmZpcnN0SW1hZ2VGcmFtZVdp
dGhvdXREZWNvZGUoKTsKKyAgICBpbnQgbGFzdERlY29kZWRSb3cgPSBvbGRCdWZmZXIgPyBvbGRC
dWZmZXItPmxhc3REZWNvZGVkUm93KCkgOiAwOworCisgICAgLy8gMi4gRGVjb2RlIGFuIGltYWdl
IGluY3JlbWVudGFsbHkuCisgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9pbWFnZURlY29kZXIt
PmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKKyAgICAgICAgQVNTRVJUKCFzZWdtZW50
LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IDMuIE1ha2UgYSBQYXJhbGxlbEZyYW1lRGF0YSBpbiBvcmRlciB0byBwYXNzIGl0IHRvIHRoZSBt
YWluIHRocmVhZC4KKyAgICBQYXJhbGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEgPSBu
ZXcgUGFyYWxsZWxGcmFtZURhdGEodGhpcyk7CisgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fc3Rh
dHVzID0gYnVmZmVyLT5zdGF0dXMoKTsKKyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9oYXNBbHBo
YSA9IGJ1ZmZlci0+aGFzQWxwaGEoKTsKKyAgICBwYXJhbGxlbEZyYW1lRGF0YS0+bV9wcmVtdWx0
aXBseUFscGhhID0gYnVmZmVyLT5wcmVtdWx0aXBseUFscGhhKCk7CisKKyAgICBpbnQgbmV3TGFz
dERlY29kZWRSb3cgPSBidWZmZXItPmxhc3REZWNvZGVkUm93KCk7CisgICAgLy8gT25seSBpbiBC
TVAsIGxhc3REZWNvZGVkUm93IGNhbiBiZSBiaWdnZXIgdGhhbiBuZXdMYXN0RGVjb2RlZFJvdy4K
KyAgICBpbnQgbGFzdERlY29kZWRNaW5Sb3cgPSBzdGQ6Om1pbihsYXN0RGVjb2RlZFJvdywgbmV3
TGFzdERlY29kZWRSb3cpOworICAgIGludCBsYXN0RGVjb2RlZE1heFJvdyA9IHN0ZDo6bWF4KGxh
c3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAgcGFyYWxsZWxGcmFtZURhdGEt
Pm1fZGVjb2RlZFJlY3QgPSBJbnRSZWN0KDAsIGxhc3REZWNvZGVkTWluUm93LCBtX2ltYWdlRGVj
b2Rlci0+c2l6ZSgpLndpZHRoKCksIGxhc3REZWNvZGVkTWF4Um93IC0gbGFzdERlY29kZWRNaW5S
b3cgKyAxKTsKKworICAgIC8vIDQuIENyZWF0ZSBkZWNvZGVkIHNlZ21lbnQgZGF0YSBpbiBvcmRl
ciB0byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyAgICBJZiB0aGUgc3RhdHVz
IGlzIEZyYW1lQ29tcGxldGUsIHRoaXMgaXMgbm90IG5lZWRlZCBiZWNhdXNlIGEgTmF0aXZlSW1h
Z2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZSBkZWNvZGVyIG9uIHRoZSBtYWluIHRocmVhZC4K
KyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzID09IEltYWdlRnJhbWU6OkZyYW1l
UGFydGlhbCkgeworICAgICAgICBpbnQgc2VnbWVudFNpemUgPSBwYXJhbGxlbEZyYW1lRGF0YS0+
bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAgICAgICBwYXJhbGxlbEZyYW1lRGF0YS0+
bV9kZWNvZGVkU2VnbWVudCA9IGFkb3B0QXJyYXlQdHIobmV3IEltYWdlRnJhbWU6OlBpeGVsRGF0
YVtzZWdtZW50U2l6ZV0pOworCisgICAgICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogc2VnbWVu
dEFkZHIgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2VnbWVudC5nZXQoKTsKKyAgICAg
ICAgbWVtY3B5KHNlZ21lbnRBZGRyLCBidWZmZXItPmdldEFkZHIoMCwgbGFzdERlY29kZWRNaW5S
b3cpLCBzZWdtZW50U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQaXhlbERhdGEpKTsKKyAgICB9
IGVsc2UgeyAvLyBGcmFtZUNvbXBsZXRlCisgICAgICAgIG1faW1hZ2VEZWNvZGVyLT5zZXREYXRh
KDAsIGZhbHNlKTsKKyAgICAgICAgbV9kYXRhRm9yVGFzay5jbGVhcigpOworICAgIH0KKworICAg
IGNhbGxPbk1haW5UaHJlYWQoYmluZChkaWREZWNvZGVUYXNrQ2FsbGJhY2ssIHBhcmFsbGVsRnJh
bWVEYXRhKSk7Cit9CisKK3ZvaWQgZGlkRGVjb2RlVGFza0NhbGxiYWNrKFBhcmFsbGVsRnJhbWVE
YXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIC8vIElmIGEgY2xpZW50IGNhbGxlZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6Y2xlYXIoKSwg
UGFyYWxsZWxJbWFnZURlY29kZXIgaXMgaW52YWxpZGF0ZWQuCisgICAgaWYgKHBhcmFsbGVsRnJh
bWVEYXRhLT5tX3BhcmFsbGVsRGVjb2Rlci0+dmFsaWQoKSkKKyAgICAgICAgcGFyYWxsZWxGcmFt
ZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT5kaWREZWNvZGVUYXNrKHBhcmFsbGVsRnJhbWVEYXRh
KTsKKyAgICBkZWxldGUgcGFyYWxsZWxGcmFtZURhdGE7Cit9CisKK0ltYWdlRnJhbWVEYXRhIGNy
ZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkK
K3sKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YTsKKyAgICBpbWFnZUZyYW1lRGF0
YS5tX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CisgICAgaW1hZ2VGcmFt
ZURhdGEubV9pc0NvbXBsZXRlID0gcGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzID09IEltYWdl
RnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYSA9ICFp
bWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgfHwgcGFyYWxsZWxGcmFtZURhdGEtPm1faGFzQWxw
aGE7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjpkaWREZWNvZGVUYXNrKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0
YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChwYXJhbGxlbEZy
YW1lRGF0YS0+bV9zdGF0dXMgIT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSk7CisKKyAgICBJbWFn
ZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUltYWdlRnJhbWVEYXRhKHBhcmFsbGVs
RnJhbWVEYXRhKTsKKworICAgIGlmICghaW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQorICAg
ICAgICBkaWREZWNvZGVQYXJ0aWFsKGltYWdlRnJhbWVEYXRhLCBwYXJhbGxlbEZyYW1lRGF0YSk7
CisgICAgZWxzZQorICAgICAgICBkaWREZWNvZGVDb21wbGV0ZShpbWFnZUZyYW1lRGF0YSk7Cit9
CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29kZVBhcnRpYWwoSW1hZ2VGcmFt
ZURhdGEmIGltYWdlRnJhbWVEYXRhLCBQYXJhbGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURh
dGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGFwcGVuZERlY29kZWRE
YXRhVG9JbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBzeW5jSW1hZ2VGcmFtZShw
YXJhbGxlbEZyYW1lRGF0YSk7CisKKyAgICBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lID0gbV9pbWFn
ZUZyYW1lLmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2VydmVyLT5kaWREZWNvZGUoaW1h
Z2VGcmFtZURhdGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjphcHBlbmREZWNv
ZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSogcGFyYWxsZWxGcmFtZURhdGEp
Cit7CisgICAgY29uc3QgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBjb25zdCBzZWdtZW50QWRkciA9
IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50LmdldCgpOworICAgIGludCBzZWdt
ZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0LnNpemUoKS5hcmVhKCk7
CisgICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0QWRkciA9IG1faW1hZ2VGcmFtZS5nZXRB
ZGRyKDAsIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0LnkoKSk7CisgICAgbWVtY3B5
KGRlc3RBZGRyLCBzZWdtZW50QWRkciwgc2VnbWVudFNpemUgKiBzaXplb2YoSW1hZ2VGcmFtZTo6
UGl4ZWxEYXRhKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OnN5bmNJbWFnZUZy
YW1lKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGxpbmVzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIGEgdmFsaWQgbmF0aXZlIGltYWdl
IGluIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKS4KKyAgICBtX2ltYWdlRnJhbWUuc2V0
U3RhdHVzKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyk7CisgICAgbV9pbWFnZUZyYW1lLnNl
dEhhc0FscGhhKHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhhKTsKKyAgICBtX2ltYWdlRnJh
bWUuc2V0UHJlbXVsdGlwbHlBbHBoYShwYXJhbGxlbEZyYW1lRGF0YS0+bV9wcmVtdWx0aXBseUFs
cGhhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlQ29tcGxldGUo
SW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBtX2RlY29kZVdvcmtlci0+aW52YWxpZGF0ZSgpOworICAgIG1fZGVjb2Rl
V29ya2VyLmNsZWFyKCk7CisgICAgLy8gVGhlIG1haW4gdGhyZWFkIGNhbiB1c2UgbV9pbWFnZURl
Y29kZXIgYmVjYXVzZSBvdGhlciB0aHJlYWRzIGRvIG5vdCBhY2Nlc3MgbV9pbWFnZURlY29kZXIg
YWZ0ZXIgdGhpcyBsaW5lLgorCisgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9pbWFnZURlY29k
ZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICBBU1NFUlQoYnVmZmVyKTsK
KworICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2Uo
KTsKKyAgICBtX29ic2VydmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFn
ZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmYwYTM4YWI3ODMwYmU0N2ZiZjAxOWY3NzAyZmQwMzJk
NTc4ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVjb2Rlcl9oCisjZGVmaW5lIFBhcmFsbGVsSW1hZ2VE
ZWNvZGVyX2gKKworI2luY2x1ZGUgIkltYWdlRGVjb2RlV29ya2VyLmgiCisjaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBJbWFnZUZyYW1lRGF0YTsKK2NsYXNzIFBhcmFsbGVsRnJhbWVEYXRhOworCitjbGFzcyBQ
YXJhbGxlbEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQYXJhbGxl
bEltYWdlRGVjb2Rlcj4geworcHVibGljOgorICAgIFBhcmFsbGVsSW1hZ2VEZWNvZGVyKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIqLCBJbWFnZURlY29kZXIqKTsKKyAgICB+UGFyYWxsZWxJ
bWFnZURlY29kZXIoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKworICAgIHZvaWQgZGVj
b2RlKCk7CisKKyAgICBpbmxpbmUgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWxlbmFtZUV4dGVuc2lvbjsgfQorICAgIGlubGluZSBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUo
SW1hZ2VEZWNvZGVyKik7CisKKyAgICBpbmxpbmUgYm9vbCB2YWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VEZWNvZGVyOyB9CisKKyAgICBzdHJ1Y3QgRW5jb2RlZERhdGFTZWdtZW50IHsKKyAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5jb2RlZERhdGFTZWdtZW50KTsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBFbmNvZGVkRGF0
YVNlZ21lbnQoKSB7IH0KKyAgICAgICAgVmVjdG9yPGNoYXI+IG1fc2VnbWVudDsKKyAgICAgICAg
Ym9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOworICAgIH07CisKKyAgICBQYXNzT3duUHRyPEVuY29k
ZWREYXRhU2VnbWVudD4gZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7CisKKyAgICAvLyBPbmx5IHRo
aXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdGFzayB0aHJlYWQuCisgICAgdm9pZCBkZWNvZGVU
YXNrKFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50Pik7CisKKyAgICB2b2lkIGRpZERlY29k
ZVRhc2soUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2b2lkIGRpZERlY29kZVBhcnRpYWwoSW1h
Z2VGcmFtZURhdGEmLCBQYXJhbGxlbEZyYW1lRGF0YSopOworICAgIHZvaWQgYXBwZW5kRGVjb2Rl
ZERhdGFUb0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2b2lkIHN5bmNJbWFn
ZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKik7CisgICAgdm9pZCBkaWREZWNvZGVDb21wbGV0ZShJ
bWFnZUZyYW1lRGF0YSYpOworICAgIGZyaWVuZCB2b2lkIGRpZERlY29kZVRhc2tDYWxsYmFjayhQ
YXJhbGxlbEZyYW1lRGF0YSopOworCisgICAgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciog
bV9vYnNlcnZlcjsKKworICAgIEludFNpemUgbV9zaXplOworICAgIFN0cmluZyBtX2ZpbGVuYW1l
RXh0ZW5zaW9uOworCisgICAgLy8gRm9yIGlucHV0IGRhdGEKKyAgICBib29sIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIGludCBtX2J5
dGVzT2ZEYXRhQ29uc3VtZWQ7CisKKyAgICAvLyBGb3Igb3V0cHV0IGRhdGEKKyAgICBJbWFnZUZy
YW1lIG1faW1hZ2VGcmFtZTsKKworICAgIC8vIFRoZSB0YXNrIHRocmVhZCBjYW4gYWNjZXNzIG9u
bHkgbV9kYXRhRm9yVGFzayBhbmQgbV9pbWFnZURlY29kZXIuCisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhRm9yVGFzazsKKworICAgIEltYWdlRGVjb2RlciogbV9pbWFnZURlY29kZXI7
CisKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+IG1fZGVjb2RlV29ya2VyOworCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhN2UxOTcwNWUxZTI5YzVmMzlhZGJkY2JlOTc3NzhhMTgxZDhl
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlcl9oCisjZGVmaW5lIFBh
cmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXJfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEltYWdlRnJhbWVEYXRhOworCisvLyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91
dCBkZWNvZGluZyBjb21wbGV0aW9uIG9mIGFuIFBhcmFsbGVsSW1hZ2VEZWNvZGVyLgorY2xhc3Mg
UGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lk
IGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpID0gMDsKKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgflBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIoKSB7IH0KK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDliYWI2NjU1N2UxZjcx
NDI4NzEwZDM1ZTg1OGY1OTNiZThkZGRiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcApAQCAtMCww
ICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlPiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKEJpdG1hcEltYWdlKiBiaXRtYXBJ
bWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
KGJpdG1hcEltYWdlKSk7Cit9CisKK1JldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpSZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2UpCisgICAgOiBtX2JpdG1hcElt
YWdlKGJpdG1hcEltYWdlKQorICAgICwgbV9yZXRhaW5lZE1vZGVDb3VudCgwKQoreworfQorCiti
b29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNv
bnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7Cisg
ICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCk7Cit9CisK
K0ludFNpemUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2Jp
dG1hcEltYWdlLT5zaXplKCk7Cit9CisKK2Jvb2wgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6Omdl
dEhvdFNwb3QoSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVy
IHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5nZXRI
b3RTcG90KHBvaW50KTsKK30KKworYm9vbCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0
YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmRhdGFDaGFu
Z2VkKGFsbERhdGFSZWNlaXZlZCk7Cit9CisKK1N0cmluZyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJl
dGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5maWxlbmFt
ZUV4dGVuc2lvbigpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95
RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJl
dGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1hZ2UtPmRlc3Ryb3lEZWNvZGVk
RGF0YShkZXN0cm95QWxsKTsKK30KKwordW5zaWduZWQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6
OmRlY29kZWRTaXplKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1v
ZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKTsK
K30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3RhcnRBbmltYXRpb24oYm9vbCBj
YXRjaFVwSWZOZWNlc3NhcnkpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2Rl
U2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RhcnRBbmltYXRpb24oY2F0Y2hVcElm
TmVjZXNzYXJ5KTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3RvcEFuaW1h
dGlvbigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7
CisgICAgbV9iaXRtYXBJbWFnZS0+c3RvcEFuaW1hdGlvbigpOworfQorCit2b2lkIFJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2
ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+cmVzZXRBbmlt
YXRpb24oKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRh
aW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKworYm9vbCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
Y3VycmVudEZyYW1lSGFzQWxwaGEoKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVk
TW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5jdXJyZW50RnJhbWVI
YXNBbHBoYSgpOworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJh
bWVJc0NvbXBsZXRlKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZl
cih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+Y3VycmVudEZyYW1lSXNDb21wbGV0
ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAg
ICBtX2JpdG1hcEltYWdlLT5kcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHN0eWxlQ29s
b3JTcGFjZSwgb3ApOworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjptYXlGaWxs
V2l0aFNvbGlkQ29sb3IoKQoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNh
dmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5tYXlGaWxsV2l0aFNvbGlkQ29s
b3IoKTsKK30KKworQ29sb3IgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKSBj
b25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOwor
ICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zb2xpZENvbG9yKCk7Cit9CisKK1JldGFpbmVkTW9k
ZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZlcihjb25zdCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSog
aW1hZ2UsIGJvb2wgcmV0YWluZWQpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9yZXRh
aW5lZChyZXRhaW5lZCkKK3sKKyAgICBpZiAobV9yZXRhaW5lZCkKKyAgICAgICAgbV9pbWFnZS0+
YmVnaW5SZXRhaW5lZE1vZGUoKTsKK30KKworUmV0YWluZWRNb2RlU2F2ZXI6On5SZXRhaW5lZE1v
ZGVTYXZlcigpCit7CisgICAgaWYgKG1fcmV0YWluZWQpCisgICAgICAgIG1faW1hZ2UtPmVuZFJl
dGFpbmVkTW9kZSgpOworfQorCitSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZShJbWFnZSogaW1hZ2UpCit7CisgICAgQVNTRVJUKGltYWdlLT5pc0JpdG1h
cEltYWdlKCkpOworCisgICAgQml0bWFwSW1hZ2UqIGJpdG1hcEltYWdlID0gc3RhdGljX2Nhc3Q8
Qml0bWFwSW1hZ2UqPihpbWFnZSk7CisgICAgaWYgKCFiaXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1v
ZGVJbWFnZS5nZXQoKSkKKyAgICAgICAgYml0bWFwSW1hZ2UtPm1fcmV0YWluZWRNb2RlSW1hZ2Ug
PSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKGJpdG1hcEltYWdlKTsKKworICAgIHJl
dHVybiBiaXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQoKTsKK30KKworSW1hZ2Uq
IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKEltYWdlKiBpbWFnZSkKK3sKKyAg
ICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2UpOworICAgIHJldHVybiBpbWFnZTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFp
bmVkTW9kZUJpdG1hcEltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlN2E4YzM4NTU3MzBjZTljOTlhZTE5
ZjEzODA5ZGFmY2Y4NTdlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlX2gKKyNkZWZp
bmUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorCisjaW5jbHVkZSAiSW1hZ2UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsKK2NsYXNzIFJldGFpbmVkTW9k
ZVNhdmVyOworCitjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7
CisgICAgZnJpZW5kIGNsYXNzIFJldGFpbmVkTW9kZVNhdmVyOworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBjcmVhdGUoQml0bWFwSW1hZ2Uq
KTsKKworICAgIHZpcnR1YWwgflJldGFpbmVkTW9kZUJpdG1hcEltYWdlKCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKKworICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEhvdFNwb3QoSW50
UG9pbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBkYXRhQ2hhbmdlZChib29sIGFsbERh
dGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dDsKKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxs
ID0gdHJ1ZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0OworCisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJvb2wgY2F0Y2hVcElmTmVjZXNzYXJ5ID0g
dHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lSGFz
QWxwaGEoKTsKKworICAgIGJvb2wgY3VycmVudEZyYW1lSXNDb21wbGV0ZSgpOworCisgICAgaW5s
aW5lIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXRhaW5l
ZE1vZGVDb3VudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisK
KyAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7CisgICAgdmlydHVhbCBD
b2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UoQml0bWFwSW1hZ2UqKTsKKworICAgIGlubGluZSB2b2lkIGJlZ2lu
UmV0YWluZWRNb2RlKCkgY29uc3QgeyBtX3JldGFpbmVkTW9kZUNvdW50Kys7IH0KKyAgICBpbmxp
bmUgdm9pZCBlbmRSZXRhaW5lZE1vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9yZXRhaW5l
ZE1vZGVDb3VudC0tOworICAgICAgICBBU1NFUlQobV9yZXRhaW5lZE1vZGVDb3VudCA+PSAwKTsK
KyAgICB9CisKKyAgICBCaXRtYXBJbWFnZSogbV9iaXRtYXBJbWFnZTsKKyAgICBtdXRhYmxlIGlu
dCBtX3JldGFpbmVkTW9kZUNvdW50OworfTsKKworY2xhc3MgUmV0YWluZWRNb2RlU2F2ZXIgewor
cHVibGljOgorICAgIFJldGFpbmVkTW9kZVNhdmVyKGNvbnN0IFJldGFpbmVkTW9kZUJpdG1hcElt
YWdlKiwgYm9vbCByZXRhaW5lZCA9IHRydWUpOworICAgIH5SZXRhaW5lZE1vZGVTYXZlcigpOwor
Citwcml2YXRlOgorICAgIGNvbnN0IFJldGFpbmVkTW9kZUJpdG1hcEltYWdlKiBtX2ltYWdlOwor
ICAgIGJvb2wgbV9yZXRhaW5lZDsKK307CisKKworUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UqIHRv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKK0ltYWdlKiB0b1JldGFpbmVkTW9kZUJp
dG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
aW5kZXggZTNhNTY1ZDE4NjU0MjE3MWY0MGEyNjM1MmFhZTgwNjk4YjgwOTRhMC4uNmY5NTc0MDc4
OGZjM2U2NzYzY2YyMWZiYjRmNmY2ZDdmNDAwMzk2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC03NjYs
MTMgKzc2NiwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKElt
YWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgQ0dJbWFnZVJlZiBuZXdJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICBpZiAo
IW5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQobmV3SW1hZ2Up
OwogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1hZ2UgY2hhbmdlZDsgd2UgaGF2
ZSB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8KICAgICAgICAgLy8gQ0dJbWFnZUNyZWF0
ZUNvcHlXaXRoQ29sb3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUgYSBuZXcgaW1hZ2UgZXZlcnkg
dGltZS4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBBU1NFUlQoIW1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlIHx8IG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpICE9IG5ld0ltYWdlKTsKICAgICAgICAgCiAgICAgICAg
IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CiAgICAgICAgIG1fcGVuZGlu
Z0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggZGM2
YTRkNGJjYjcyYzZhZTczNGZlNzM5YThjNGNlN2Q1NjQxNWY0Ny4uZDA2YjFmNzdiZmRhNTkzNGJl
ZDc2Y2UxOTI5NzBhMmM0YzI4MTIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTU4LDYg
KzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2
ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkK
ICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVl
KQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAgIGludCB3aWR0aCA9IGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcAppbmRleCAyNTQyY2Y4ZmE5MWQwYjhhNzE0Mzg1YTRlMzAyMzk2NzgzZDk2MWRk
Li5iNzQyNWE5ZTgxNmZiM2JlZWRiMzJlMDA3ZDdkMmI4ZDMxNTEyZDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVuc2lnbmVkIGludCBmb3JtYXQs
IHVuc2lnbmVkCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFnZUZyYW1lRGF0YSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUlt
YWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJhbWVBdEluZGV4KDApOwogICAgICAgICBp
ZiAoIWltYWdlSW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VDYWlybz4gbmF0aXZlSW1hZ2UgPSBh
ZG9wdFB0cihpbWFnZUltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAppbmRleCA3ODBiYTQ0ZDg0MWE2MDA5OTM5ODhkYTIzMTQ2MzA4MjlkNDMzOTNkLi4zODdmMWVm
NTJlZGU5MTM4YTQwYWRkZGM5ZjZkNTc4NzU2Yzg1MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0
YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0
cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VG
cmFtZURhdGEgPSBkZWNvZGVyLnJlcXVlc3RGcmFtZUF0SW5kZXgoMCk7CiAgICAgICAgIGRlY29k
ZWRJbWFnZS5hZG9wdENGKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgICAgICBjZ0ltYWdl
ID0gZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA3M2NlZTIyMDVkNWYyZDk3MWI5
ZGFhYWI2MzQzNWVjZjUxOTAwYWYwLi40MDYzZGYwNTQ4YTE3YTA2MTAwYzYwN2ZkMmM3ODI5NGQ4
MWJlZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUNHLmNwcApAQCAtODEsNiArODEsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFn
ZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUo
dHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3Vu
dCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBDR0Zsb2F0IHdp
ZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwogICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJ
bWFnZUdldEhlaWdodChjZ0ltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggYjQ0NTQ5OTNiNTI4N2M1NGZm
NzRiMjliMGRlMDMwNjI3NmFmYjQyNC4uZmE5YmMzZWQyMDMwMjVjYTgwMGM5YjNhYTcwYmQ1NWIz
ZmYyNmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CkBAIC0zMDksMTEgKzMxMCwxMiBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNv
ZGVyKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBib29sKQogewogICAgIEFTU0VSVChtX29ic2VydmVyKTsKICAgICBJ
bWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7
CiAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChpbmRleCwgaW1hZ2VGcmFt
ZURhdGEpOworICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0KIAogSW1hZ2VGcmFtZURhdGEg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNw
cAppbmRleCBjZDg3OTRlNTM5Y2ZkNTBlZTg4YTc3ZTA3YzQ1ZjgyYWI5Y2Q3MzUzLi45MDAwZmMz
ZGZiNWIzMDljZGFmYWE5OTcxMjViN2I5NjM1ZWYzZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAKQEAgLTY3
LDYgKzY3LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFRpbGVkSW1hZ2VPcGVuVkcqIHRp
bGVkSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxl
KHRydWUpCiAgICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZy
YW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKG1fc2l6ZS53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKG1fc2l6ZS5oZWlnaHQoKSA+IDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApp
bmRleCBlNjc1Y2Q0MmJmMzEwOTRlYWFiZWQxODEwODQwZTc4ZjBhMTY0MWIzLi45N2I1NjUyZjNk
NDc5OTdmZGU0ZTkxMTE4M2U4MDRhOWU2YTBmNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMjE0LDYgKzIxNCw3IEBAIEJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShRSW1hZ2UqIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQog
ICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxz
ZSkKIHsKICAgICBpbnQgd2lkdGggPSBpbWFnZS0+d2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0g
aW1hZ2UtPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCmluZGV4IGY1NmQ3
MjQ1YWQxMGVjM2FlODViZWQ0MjcwOWU2ZjZiNDcyYjJjNTAuLjFmMDQ1OWM1NGFjNTA1ZmM3MmJk
M2NiMDg2ZWFlZTI2ODhhNWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdl
KiBpbWFnZSwKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3Jl
YXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0
YSA9IGRlY29kZXIucmVxdWVzdEZyYW1lQXRJbmRleCgwKTsKICAgICAgICAgaWYgKCFpbWFnZUZy
YW1lRGF0YS5tX2lzQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGhhc0FscGhhID0gaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDI4MDI5MzNhOTk2YzUzYzM4NzEyZDRkZDcx
MTg3YjNhNjU1ZDkwZjIuLjQ1Y2Y2ZGJjODg5ODQ2ZmRiM2FjMDNkMzIwNzFkMDcyZDlmNmI5MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzE1LDgg
KzMxNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzUmVj
dChjb25zdCBJbnRSZWN0JiB2YWx1ZSkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewotICAgIGlmIChpbWFnZSA9
PSBtX2ltYWdlKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGltYWdlICE9IG1faW1hZ2Up
OwogCiAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2ltYWdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCmluZGV4IGI3YzI0OTZj
NzNiNTI2NWYxZDg1MzRlMzM3ZWU4YzIwZmUzMDI5ODkuLmI0YjU3YmU5YmEzNDMwNWQzNDlmYmY0
YzRlNWI0NzY3NWZiODMxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlV3guY3BwCkBAIC05NSw2ICs5NSw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZShjb25zdCB3eEJpdG1hcCYgYml0bWFwKQogICAgICwgbV9kZWNvZGVkU2l6ZSgwKQogICAg
ICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogICAgICwgbV9mcmFtZUNvdW50KDEpCisgICAgLCBt
X2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIG1fZGVjb2RlZFNpemUgPSBiaXRtYXAuR2V0
V2lkdGgoKSAqIGJpdG1hcC5HZXRIZWlnaHQoKSAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZShi
aXRtYXAuR2V0V2lkdGgoKSwgYml0bWFwLkdldEhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4
IDcyYjVkZGMyZGUzMWQwMDQwNzI3ZDQ0ZTk1MTYyYWRmNmJhYzc2YzcuLjkwNGY4NjY4NjMzMmRh
OGMzMjZkZDBmNmViNTdiYjQ1NTY3NzVkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQwLDYgKzE0
MCw3IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAKIEltYWdlRnJhbWU6OkltYWdlRnJhbWUo
KQogICAgIDogbV9oYXNBbHBoYShmYWxzZSkKKyAgICAsIG1fbGFzdERlY29kZWRSb3coMCkKICAg
ICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0aW9uKDApCiAgICAgLCBtX2Rp
c3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCkBAIC0xNjUsNiArMTY2LDcgQEAgdm9p
ZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7CiAgICAgbV9iYWNraW5nU3RvcmUuY2xl
YXIoKTsKICAgICBtX2J5dGVzID0gMDsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKICAgICBt
X3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAgLy8gTk9URTogRG8gbm90IHJlc2V0IG90aGVyIG1l
bWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgY2FsbHMgdGhpcwogICAgIC8vIHRv
IGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rpb25zIGxpa2UgaW5pdEZyYW1l
QnVmZmVyKCkgYW5kCkBAIC0xODcsNiArMTg5LDcgQEAgYm9vbCBJbWFnZUZyYW1lOjpjb3B5Qml0
bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICBtX2J5dGVzID0gbV9iYWNraW5n
U3RvcmUuZGF0YSgpOwogICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKICAgICBzZXRIYXNBbHBo
YShvdGhlci5tX2hhc0FscGhhKTsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gb3RoZXIubV9sYXN0
RGVjb2RlZFJvdzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTk5LDYgKzIwMiw3IEBAIGJv
b2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQpCiAgICAg
bV9iYWNraW5nU3RvcmUucmVzaXplKGJhY2tpbmdTdG9yZVNpemUpOwogICAgIG1fYnl0ZXMgPSBt
X2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXplID0gSW50U2l6ZShuZXdXaWR0aCwgbmV3
SGVpZ2h0KTsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKIAogICAgIHplcm9GaWxsUGl4ZWxE
YXRhKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDkxMTg3OGUxZDk2MjIyNjQ3
ZTdmMzQ3ZTc2NjJkMmZiZWYzZjAyOGIuLjI3MDNlNDg4YjhlNjhhNmU5NmNkY2I1YWIyZTk1NmU3
YTU1YWRlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTgsNiArMTE4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAK
ICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworICAgICAgICBpbnQgbGFzdERlY29kZWRS
b3coKSBjb25zdCB7IHJldHVybiBtX2xhc3REZWNvZGVkUm93OyB9CiAgICAgICAgIGNvbnN0IElu
dFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1l
UmVjdDsgfQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVy
YXRpb247IH0KQEAgLTEyNSw2ICsxMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBo
YTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CisgICAgICAgIGlu
bGluZSB2b2lkIHNldExhc3REZWNvZGVkUm93KGludCBsYXN0RGVjb2RlZFJvdykgeyBtX2xhc3RE
ZWNvZGVkUm93ID0gbGFzdERlY29kZWRSb3c7IH0KICAgICAgICAgdm9pZCBzZXRDb2xvclByb2Zp
bGUoY29uc3QgQ29sb3JQcm9maWxlJik7CiAgICAgICAgIHZvaWQgc2V0T3JpZ2luYWxGcmFtZVJl
Y3QoY29uc3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVSZWN0ID0gcjsgfQogICAgICAg
ICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwpAQCAtMTgxLDYgKzE4Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgbV9jb2xv
clByb2ZpbGUgYW55bW9yZT8KICAgICAgICAgQ29sb3JQcm9maWxlIG1fY29sb3JQcm9maWxlOwog
I2VuZGlmCisgICAgICAgIGludCBtX2xhc3REZWNvZGVkUm93OwogICAgICAgICBJbnRSZWN0IG1f
b3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIGV4Y2VwdCBm
b3IgR0lGIGZyYW1lcyB3aG9zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTIyOCw2ICsyMzEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0g
YWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKKyAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisKICAgICAgICAgLy8gTGF6aWx5LWRl
Y29kZXMgZW5vdWdoIG9mIHRoZSBpbWFnZSB0byBnZXQgdGhlIHNpemUgKGlmIHBvc3NpYmxlKS4K
ICAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB0aGF0IGhhcyB0byBiZSBkb25lIGJ5IGVhY2gg
c3ViY2xhc3M7IGZhY3RvciB0aGUKICAgICAgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2Ug
aXQgaGVyZS4KQEAgLTI3Niw2ICsyODEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAgICAgdmlydHVhbCBJbWFnZUZy
YW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAKKyAgICAgICAgLy8gUmV0dXJu
cyBhbiBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlciB3aXRob3V0IGRlY29kaW5nIG1vcmUuCisg
ICAgICAgIEltYWdlRnJhbWUqIGZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSA/IDAg
OiAmbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBzZXRJ
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFuZENv
bG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclBy
b2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNr
YmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDZhNjVlNjE3
ZDE5ZTY3YmZhMjE4MDUzODdjMTE5NWRhNDgyMWRiNmQuLmJkY2FlZjA1ZWE0MDExNWQwNmNmNzM1
ZjA5MTlhYWM0YjIxOWVlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2tiZXJyeS9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMTU3LDYgKzE1Nyw3IEBAIGludCBJbWFnZVJlYWRlcjo6ZGVjb2RlKHNpemVf
dCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgSW1hZ2VGcmFtZSogYUZyYW1lKQogICAgICAgICAgICAg
YUZyYW1lLT5zZXRSR0JBKGksIGosIGN1clB0clswXSwgY3VyUHRyWzFdLCBjdXJQdHJbMl0sIDI1
NSk7CiAgICAgICAgICAgICBjdXJQdHIgKz0gMzsKICAgICAgICAgfQorICAgICAgICBhRnJhbWUt
PnNldExhc3REZWNvZGVkUm93KGopOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjBhMjQ4YzdkM2JjYjExY2FkN2M2NzY5NWViODI3NTc1
Mjc4MjQ5My4uZjc0ZGRlM2EwZGZmYWFiNzliMDVhYjQzOGJkMWZmOGZlYTJjMjRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTY0LDggKzY0LDE1IEBAIHZvaWQgQk1QSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKQogewotICAgIGlmICgh
SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkKKyAgICBpZiAoIUltYWdlRGVjb2Rlcjo6
aXNTaXplQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgLy8gT25seSBCTVBJbWFnZURlY29kZXIgbXVz
dCBtYWtlIG1fZnJhbWVCdWZmZXJDYWNoZVswXSBpbiBpc1NpemVBdmFpbGFibGUoKSwKKyAgICAg
ICAgLy8gYmVjYXVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBJbWFnZUZyYW1lOjptX2xhc3REZWNv
ZGVkUm93IGNhbiBiZSAiaGVpZ2h0IC0gMSIuCisgICAgICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2Fj
aGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2ZyYW1lQnVmZmVyQ2FjaGUucmVzaXplKDEp
OworICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmZpcnN0KCkuc2V0UHJlbXVsdGlwbHlB
bHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOworICAgICAgICB9CiAgICAgICAgIGRlY29kZSh0cnVl
KTsKKyAgICB9CiAKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDVjMDA1NTM0ZWNkOTIxMzRhMTNiMzI5
NTg5Mjc3OTBmMDdhZDBmODEuLjRmN2UzMTc5ZTY2NjMzOGEzYTExNGIxYjIyYTFlMzQ5NDgzOTQ1
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcApAQCAtNjQsOCArNjQsMTEgQEAgYm9vbCBC
TVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNpemUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIHByb2Nlc3NJbmZvSGVhZGVyKCkgc2V0IHRoZSBzaXplLCBzbyBpZiB0
aGF0J3MgYWxsIHdlIG5lZWRlZCwgd2UncmUgZG9uZS4KLSAgICBpZiAob25seVNpemUpCisgICAg
aWYgKG9ubHlTaXplKSB7CisgICAgICAgIGlmICghbV9pc1RvcERvd24pCisgICAgICAgICAgICBt
X2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9wYXJlbnQtPnNpemUoKS5oZWlnaHQoKSAtIDEp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBSZWFkIGFuZCBwcm9jZXNz
IHRoZSBiaXRtYXNrcywgaWYgbmVlZGVkLgogICAgIGlmIChtX25lZWRUb1Byb2Nlc3NCaXRtYXNr
cyAmJiAhcHJvY2Vzc0JpdG1hc2tzKCkpCkBAIC02MjQsNiArNjI3LDcgQEAgYm9vbCBCTVBJbWFn
ZVJlYWRlcjo6cHJvY2Vzc1JMRURhdGEoKQogCiAgICAgICAgICAgICAgICAgbV9kZWNvZGVkT2Zm
c2V0ICs9IDI7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERl
Y29kZWRSb3cobV9jb29yZC55KCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzE3LDYgKzcy
MSw3IEBAIEJNUEltYWdlUmVhZGVyOjpQcm9jZXNzaW5nUmVzdWx0IEJNUEltYWdlUmVhZGVyOjpw
cm9jZXNzTm9uUkxFRGF0YShib29sIGluUkxFLCBpCiAgICAgICAgICAgICAgICAgICAgICAgICBn
ZXRDb21wb25lbnQocGl4ZWwsIDIpLCBhbHBoYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICAgICAgbV9idWZmZXItPnNldExhc3REZWNvZGVkUm93KG1fY29vcmQueSgpKTsKIAogICAg
ICAgICAvLyBTdWNjZXNzLCBrZWVwIGdvaW5nLgogICAgICAgICBtX2RlY29kZWRPZmZzZXQgKz0g
cGFkZGVkTnVtQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDVmNjE5M2I4
ZjllMWJhOTM3YjZlM2ZjNzMxNzQ5MjQzNGRhYWUyZGEuLjcxOThhMTFjMWYxNTY4MDBjN2FiYjFm
ZmVhNDAxYjJjNzU5MDg1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0yNDks
MTAgKzI0OSwxNCBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWdu
ZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZgogICAgICAgICAgICAgICAgIGJ1
ZmZlci5zZXRSR0JBKHgsIHlCZWdpbiwgMCwgMCwgMCwgMCk7CiAgICAgICAgIH0KICAgICB9Cisg
ICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHlCZWdpbik7CiAKICAgICAvLyBUZWxsIHRoZSBm
cmFtZSB0byBjb3B5IHRoZSByb3cgZGF0YSBpZiBuZWVkIGJlLgotICAgIGlmIChyZXBlYXRDb3Vu
dCA+IDEpCisgICAgaWYgKHJlcGVhdENvdW50ID4gMSkgewogICAgICAgICBidWZmZXIuY29weVJv
d05UaW1lcyh4QmVnaW4sIHhFbmQsIHlCZWdpbiwgeUVuZCk7CisgICAgICAgIEFTU0VSVCgoeUVu
ZCAtIDEpID49IDApOworICAgICAgICBidWZmZXIuc2V0TGFzdERlY29kZWRSb3coeUVuZCAtIDEp
OworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzkwLDYgKzM5NCw3IEBAIGJvb2wg
R0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWduZWQgZnJhbWVJbmRleCkKICAg
ICAgICAgICAgICAgZm9yIChpbnQgeSA9IHByZXZSZWN0LnkoKTsgeSA8IHByZXZSZWN0Lm1heFko
KTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gcHJldlJlY3QueCgpOyB4
IDwgcHJldlJlY3QubWF4WCgpOyArK3gpCiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5z
ZXRSR0JBKHgsIHksIDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRM
YXN0RGVjb2RlZFJvdyh5KTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBpZiAoKHBy
ZXZSZWN0LndpZHRoKCkgPiAwKSAmJiAocHJldlJlY3QuaGVpZ2h0KCkgPiAwKSkKICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+c2V0SGFzQWxwaGEodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA5MWYxMjM2YjM1OWJjMTU1YWYzN2M3ZmUyY2UzNmVhNzNjNTA5NDk2
Li40ODYxY2I2NjcyMzk3OGNiZGIzNzc4ZTBiMzc4MTk4ZWViOWIwNGNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU3Nyw2ICs1NzcsNyBAQCBib29sIEpQRUdJbWFnZURl
Y29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgaWYgKHR1cmJvU3dpenpsZWQoaW5mby0+b3V0
X2NvbG9yX3NwYWNlKSkgewogICAgICAgICBBU1NFUlQoIW1fc2NhbGVkKTsKICAgICAgICAgd2hp
bGUgKGluZm8tPm91dHB1dF9zY2FubGluZSA8IGluZm8tPm91dHB1dF9oZWlnaHQpIHsKKyAgICAg
ICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhpbmZvLT5vdXRwdXRfc2NhbmxpbmUpOwog
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogcm93ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oYnVmZmVyLmdldEFkZHIoMCwgaW5mby0+b3V0cHV0X3NjYW5saW5lKSk7CiAgICAg
ICAgICAgICBpZiAoanBlZ19yZWFkX3NjYW5saW5lcyhpbmZvLCAmcm93LCAxKSAhPSAxKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyOCw2ICs2MjksNyBAQCBib29sIEpQRUdJ
bWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGJ1ZmZlci5zZXRM
YXN0RGVjb2RlZFJvdyhkZXN0WSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDEzOGQ1YzUxMjkxZWEyNmY2OTY0M2Y2YWE0NDg4NGJi
NWM2NDgwZWYuLjgxMGNhYTcyMDgyMTlmZmY2Y2Y2Mjk3NGU4ZWY3ZWYxYjM0NTFiM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01MjAsNiArNTIwLDcgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiByb3dCdWZmZXIsIHVuc2lnbmVk
IHJvd0luZGV4LAogCiAgICAgaWYgKG5vblRyaXZpYWxBbHBoYSAmJiAhYnVmZmVyLmhhc0FscGhh
KCkpCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShub25Ucml2aWFsQWxwaGEpOworICAgIGJ1
ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKIH0KIAogdm9pZCBQTkdJbWFnZURlY29kZXI6OnBu
Z0NvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCmluZGV4IDVjYzEzMmM0
ZDQ4NDAwYjgxNTJlZTVmNGZlZjIyNDJjNDI5ZGI2YjYuLjEzMzE4YTM4NDZmZjVhZWJkOTMwMmFk
MzJlMTUzMjNkZDg3MzhjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcApAQCAt
NTcsNiArNTcsNyBAQCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1h
Z2VGcmFtZSYgb3RoZXIpCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKICAg
ICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAgIG1fbGFzdERlY29kZWRSb3cgPSAwOwog
ICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBOT1RFOiBEbyBub3QgcmVzZXQgb3Ro
ZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoKQogICAgIC8vIGNhbGxzIHRo
aXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBmdW5jdGlvbnMgbGlrZQpAQCAt
NzYsNiArNzcsNyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdl
RnJhbWUmIG90aGVyKQogCiAgICAgbV9iaXRtYXAuYml0bWFwKCkucmVzZXQoKTsKICAgICBjb25z
dCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFwID0gb3RoZXIubV9iaXRtYXA7CisgICAgbV9s
YXN0RGVjb2RlZFJvdyA9IG90aGVyLm1fbGFzdERlY29kZWRSb3c7CiAgICAgcmV0dXJuIG90aGVy
Qml0bWFwLmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAuYml0bWFwKCksIG90aGVyQml0bWFwLmJp
dG1hcCgpLmNvbmZpZygpKTsKIH0KIApAQCAtODQsNiArODYsNyBAQCBib29sIEltYWdlRnJhbWU6
OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQogICAgIC8vIHNldFNpemUoKSBz
aG91bGQgb25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVtb3J5IG90aGVyd2lzZS4KICAg
ICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsKIAorICAgIG1fbGFzdERlY29kZWRSb3cg
PSAwOwogICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4
OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwogICAgIGlmICghbV9iaXRtYXAuYml0bWFw
KCkuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKaW5kZXggMDgyZTMzZGRiMmEzNjBlMzg4OGQ3OWIwM2E5YzIxY2NkYjhj
MDNjMi4uYTlmOThhZDgwZjZmMTk4MDU4ZDJhZmRlYmI2YTQwOWUyM2FlNzlkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsMTkgKzEzMiwyNiBAQCBib29sIFdFQlBJ
bWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAgICAgICAgICAgcmV0dXJuIHNl
dEZhaWxlZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAoV2ViUElVcGRhdGUobV9kZWNvZGVyLCBk
YXRhQnl0ZXMsIGRhdGFTaXplKSkgewotICAgIGNhc2UgVlA4X1NUQVRVU19PSzoKLSAgICAgICAg
YnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKLSAgICAgICAgV2Vi
UElEZWxldGUobV9kZWNvZGVyKTsKLSAgICAgICAgbV9kZWNvZGVyID0gMDsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgY2FzZSBWUDhfU1RBVFVTX1NVU1BFTkRFRDoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGRlZmF1bHQ6CisgICAgY29uc3QgVlA4U3RhdHVzQ29kZSBzdGF0dXMgPSBX
ZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNpemUpOworICAgIGlmIChzdGF0
dXMgIT0gVlA4X1NUQVRVU19PSyAmJiBzdGF0dXMgIT0gVlA4X1NUQVRVU19TVVNQRU5ERUQpIHsK
ICAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKICAgICAgICAgbV9kZWNvZGVyID0gMDsK
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KKyAgICBpbnQgbGFzdFkgPSAwOwor
ICAgIGlmICghV2ViUElEZWNHZXRSR0IobV9kZWNvZGVyLCAmbGFzdFksIDAsIDAsIDApKQorICAg
ICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgQVNTRVJUKGxhc3RZID49IDApOworICAgIEFT
U0VSVChsYXN0WSA8PSBzaXplKCkuaGVpZ2h0KCkpOworICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2Rl
ZFJvdyhsYXN0WSA/IGxhc3RZIC0gMSA6IDApOworCisgICAgaWYgKHN0YXR1cyA9PSBWUDhfU1RB
VFVTX1NVU1BFTkRFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYnVmZmVyLnNldFN0
YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKKyAgICBXZWJQSURlbGV0ZShtX2RlY29k
ZXIpOworICAgIG1fZGVjb2RlciA9IDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmlu
ZGV4IDQ4ZWEwNTQ3MGRkZjA0YmQxMDQyZDVlYjMwYzE2YmZjZTc4ZDNiMTQuLjhlNmI5NDhlZTZl
NjhkM2FmZDAzZjY3MDg3ZjJhMTAzMjI0OGVlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IHVzYWJsZVdpZHRoID0gY1dpZHRoIC0gMjsKICAg
ICAgICAgICAgIExheW91dFVuaXQgdXNhYmxlSGVpZ2h0ID0gY0hlaWdodCAtIDI7CiAKLSAgICAg
ICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCk7Cisg
ICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3Nz
aWJsZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCkuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAo
bV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIWltYWdlLT5pc051bGwoKSAmJiB1
c2FibGVXaWR0aCA+PSBpbWFnZS0+d2lkdGgoKSAmJiB1c2FibGVIZWlnaHQgPj0gaW1hZ2UtPmhl
aWdodCgpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJD
b3JlOjpkZXZpY2VTY2FsZUZhY3RvcihmcmFtZSgpKTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lk
IFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAgICAgIGlmIChjZW50ZXJZIDwgMCkKICAg
ICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZz
ZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIDEsIHRvcEJv
cmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAxKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgSW50UmVjdChyb3Vu
ZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCksIGltYWdlU2l6ZSksIENvbXBv
c2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgp
LCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0KSwgaW1h
Z2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24oKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAg
ICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QKICAg
ICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3VyY2UtPmVy
cm9yT2NjdXJyZWQoKSB8fCBhbGlnbmVkUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFJlY3Qu
aGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWcg
PSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0
LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlm
UG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGlnbmVkUmVjdC53aWR0aCgpLCBhbGln
bmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBpbWFnZUVs
dCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRlU291cmNlT3ZlcjsK
ICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCkuZ2V0KCk7CiAgICAg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRl
eHQsIGltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGlnbmVkUmVjdC53aWR0aCgpLCBhbGlnbmVk
UmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3Qs
IGNvbXBvc2l0ZU9wZXJhdG9yLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VM
b3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdlKGltZywgc3R5bGUoKS0+
Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogYm9vbCBS
ZW5kZXJJbWFnZTo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0CkBA
IC00ODEsNyArNDgxLDcgQEAgYm9vbCBSZW5kZXJJbWFnZTo6YmFja2dyb3VuZElzT2JzY3VyZWQo
KSBjb25zdAogCiAgICAgLy8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFnZSB3aXRoIGFscGhhLgogICAg
IEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKLSAgICBpZiAo
IWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5jdXJyZW50RnJhbWVI
YXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwg
dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSktPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDk4
ODZmYjMxOTgyMzUzZDY0MDIzZjU3NGIwMGMxNGEyMGZiMWZjMmEuLjljMzc0ZWY0YjRjNTRkM2Nj
MmI0YTUyYThhNWI4NGU5ZDhmYjc3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJCYWNraW5nLmgiCiAKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCisj
aW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgpA
QCAtMTA3OSw4ICsxMDgwLDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFn
ZUNvbnRlbnRzKCkKICAgICBpZiAoIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3QgaGF2
ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
Q29udGVudHNUb0ltYWdlKGltYWdlKTsKKyAgICBpZiAoaW1hZ2UgIT0gbV9jb21wb3NpdGVkSW1h
Z2UpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHRoZSBpbWFnZSBpcyBmdWxs
eSBkZWNvZGVkIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBsYXllci4KKyAgICAgICAgaWYgKGlt
YWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIXRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2Up
LT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgUmVmUHRyPEltYWdlPiBkZWNvZGVkQml0bWFwSW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgaWYg
KGltYWdlLT5pc0JpdG1hcEltYWdlKCkpIHsKKyAgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyIGlt
YWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgICAg
ICBkZWNvZGVkQml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlUHRyKTsKKyAg
ICAgICAgfQorICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhlIGxheWVyIGRvZXNuJ3Qg
aGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgorICAgICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9JbWFnZShkZWNvZGVkQml0bWFwSW1hZ2UuZ2V0KCkpOworICAgICAg
ICBtX2NvbXBvc2l0ZWRJbWFnZSA9IGltYWdlOworICAgIH0KKwogICAgIHVwZGF0ZURyYXdzQ29u
dGVudCgpOwogICAgIAogICAgIC8vIEltYWdlIGFuaW1hdGlvbiBpcyAibGF6eSIsIGluIHRoYXQg
aXQgYXV0b21hdGljYWxseSBzdG9wcyB1bmxlc3Mgc29tZW9uZSBpcyBkcmF3aW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggMGY0MmQzZmI5
MWIxNzkzNTk3OWZkYjE4ZGJkMDZmY2E2OGZiYzg0Yy4uMDcyODBkY2I5NTQwNGEyMTAwNDVjMmNm
MDI0OTgxMTFmZWRjNzk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMjQxLDYgKzI0MSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEdy
YXBoaWNzTGF5ZXI+IG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBPd25QdHI8R3Jh
cGhpY3NMYXllcj4gbV9sYXllckZvclNjcm9sbENvcm5lcjsKIAorICAgIFJlZlB0cjxJbWFnZT4g
bV9jb21wb3NpdGVkSW1hZ2U7CisKICAgICBJbnRSZWN0IG1fY29tcG9zaXRlZEJvdW5kczsKIAog
ICAgIGJvb2wgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kczsgICAgICAvLyBib3VuZHMgaGFk
IHRvIGJlIG1hZGUgbm9uLXplcm8gdG8gbWFrZSB0cmFuc2Zvcm0tb3JpZ2luIHdvcmsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTZi
ZTVjZDQxNmJjZGUyNmUwYTg1NWJlMWFkY2VhMmI0M2ZjMGI5NS4uYTE5NmU3NWY4YTlkZjFhMjhk
YzZlN2JhOTA1NGU5NmYxNTUxNTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTEyNywx
NCArMTI4LDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0
IHJlbmRlcmluZ0NvbnRleHQodGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAgICAgICBp
ZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAgICAgICAgICAg
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworICAg
ICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBv
c3NpYmxlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
RmxvYXRSZWN0IGRlc3RSZWN0ID0gbV9vYmplY3RCb3VuZGluZ0JveDsKICAgICAgICAgICAgICAg
ICBGbG9hdFJlY3Qgc3JjUmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgp
KTsKIAogICAgICAgICAgICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKICAgICAgICAgICAgICAgICBpbWFn
ZUVsZW1lbnQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBz
cmNSZWN0KTsKIAotICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3Qp
OworICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAK
aW5kZXggM2JhZWEyN2M5ZjU1NDgzYWYwNThhYWZiNjE4MTA3MmUyNDRhMDZkMC4uY2RlMTM5ZmNl
Y2FlNTgzOGYzNjI1ZjljODc5OTBhMzc3MjEwOTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VDRy5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6
OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXpl
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEg
PSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBp
bWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZnJhbWUoQWRvcHRDRiwgaW1hZ2VGcmFtZURhdGEubV9mcmFt
ZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAppbmRleCBmYjBkZjdjYWZmY2Ex
ZmEwYjM3ZDZlNjNhOWVlMTcwODI4ODYwNjA1Li41ZDg2NGEyN2JhOTEwNjAwMzU5MjkxYTU3NmIy
NDY0NmIwNTdlMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZVNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tp
YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0
IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRl
RnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9
IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBPd25QdHI8TmF0aXZlSW1h
Z2VTa2lhPiBmcmFtZSA9IGFkb3B0UHRyKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBXZWJJbWFnZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154871</attachid>
            <date>2012-07-27 00:55:12 -0700</date>
            <delta_ts>2014-02-05 10:58:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90935-20120727165434.patch</filename>
            <type>text/plain</type>
            <size>95840</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZkZjhmOGM4ZjgxNWE3
Yjk3NTllMzFiOWU3MmY3N2RhZmY3MTJhYi4uZjgyYjY4NTE0YzcyMzZkNWM2MjI3NjYyZmJlZTJk
NzIyNDA5ODcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAxMi0wNy0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBBZGQgcGFy
YWxsZWwgaW1hZ2UgZGVjb2RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwOTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXV0aG9yZWQgYnkgSHVhbmcgRG9uZ3N1bmcgYW5kIEt3YW5nIFl1bCBTZW8u
CisKKyAgICAgICAgTWFrZSBpbWFnZSBkZWNvZGluZyBvZmYgdGhlIG1haW4gdGhyZWFkLCBzbyB0
aGF0IHRoZSBtYWluIHRocmVhZCBjYW4gc3BlbmQgbW9yZQorICAgICAgICB0aW1lIGluIGxvYWRp
bmcsIHBhcnNpbmcsIHNjcmlwdGluZyBhbmQgbGF5b3V0IHdoaWxlIGltYWdlIGRlY29kaW5nIHRo
cmVhZHMgZGVjb2RlCisgICAgICAgIGltYWdlcyBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICBSZWZlciB0byBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9wdWI/aWQ9MTJnZjdN
aE5IZnVwZVIzR2RSRi1oMlZ6Zzg2dmlDYndYcThfSkJ5SEtsZzAKKyAgICAgICAgZm9yIGRldGFp
bGVkIGV4cGxhbmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnJldGFpbmVkTW9kZVJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVJc0Nv
bXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAg
ICAgICAoQml0bWFwSW1hZ2UpOiBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJj
ZU9ic2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmCisgICAgICAgIHRvIEltYWdlU291cmNlIG9uIGNv
bnN0cnVjdGlvbi4gV2hlbiBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBhIGNhY2hlZCBp
bWFnZQorICAgICAgICBpcyBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcElt
YWdlIHZpYQorICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFt
ZURhdGEoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RG
cmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNob3VsZERlY29k
ZVBhcmFsbGVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaXJzdEZyYW1lSXND
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cGFyYWxsZWxEZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRpZERlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyUGFyYWxsZWxEZWNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXJpYWxEZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW1h
Z2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKTogT25jZSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSBhbmQgSW1hZ2VTb3VyY2UgZGVjaWRl
IGl0IGlzIG9rYXkgdG8gdXNlCisgICAgICAgIHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGlz
IGNsYXNzIGludGVyY2VwdHMgZGVjb2RpbmcgcmVxdWVzdHMgZnJvbSBJbWFnZVNvdXJjZQorICAg
ICAgICBhbmQgcGVyZm9ybXMgaW1hZ2UgZGVjb2Rpbmcgb24gdGhlIGRlY29kZXIgdGhyZWFkLiBJ
bnN0ZWFkIG9mIHJlaW1wbGVtZW50aW5nIGFsbAorICAgICAgICB0aGUgZGVjb2RlcnMgZnJvbSBz
Y3JhdGNoLCBpdCByZXVzZXMgdGhlIGV4aXN0aW5nIGltYWdlIGRlY29kZXJzLgorICAgICAgICAo
V2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmludmFsaWRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKToKKyAgICAg
ICAgKFBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsRnJhbWVE
YXRhOjpQYXJhbGxlbEZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEZyYW1l
RGF0YTo6flBhcmFsbGVsRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmRpZERlY29kZVRhc2tD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlVGFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6ZGlkRGVjb2RlUGFydGlhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6YXBwZW5kRGVjb2RlZERhdGFU
b0ltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURlY29kZXI6OnN5
bmNJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpk
aWREZWNvZGVDb21wbGV0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJ
bWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFs
bGVsSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmFsbGVsSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVj
b2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJhbGxlbEltYWdlRGVjb2Rlcjo6dmFs
aWQpOgorICAgICAgICAoRW5jb2RlZERhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBh
cmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ6OkVuY29kZWREYXRhU2VnbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZU9ic2VydmVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBhcmFsbGVs
SW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlcjo6flBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKTogQmVjYXVzZSBpbWFnZSBkZWNvZGluZyBpcyB1c2VkIGluIHZhcmlv
dXMgY29udGV4dHMgaW4gV2ViS2l0LCBpdCBpcyBzaW1wbHkKKyAgICAgICAgaW1wb3NzaWJsZSB0
byBtYWtlIGFsbCBwYXJhbGxlbCBkZWNvZGluZyBwYXJhbGxlbC4gSW5zdGVhZCwgd2Ugc2VsZWN0
aXZlbHkgdXNlIHBhcmFsbGVsCisgICAgICAgIGltYWdlIGRlY29kZXJzIHdoZXJlIHBvc3NpYmxl
IGFuZCB1c2UgdGhlIGV4aXN0aW5nIHNlcXVlbnRpYWwgaW1hZ2UgZGVjb2RlcnMgb3RoZXJ3aXNl
LgorICAgICAgICBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSB3cmFwcyBhIEJpdG1hcEltYWdlIGFu
ZCBoZWxwcyBkZWNpZGUgd2hlbiBpdCBpcyBzYWZlIGFuZCBiZW5lZmljaWFsCisgICAgICAgIHRv
IHVzZSBwYXJhbGxlbCBpbWFnZSBkZWNvZGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVk
TW9kZUJpdG1hcEltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Z2V0SG90U3BvdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rv
cEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6
cmVzZXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXNDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpzb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVTYXZlcjo6flJldGFpbmVkTW9kZVNh
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6flJldGFpbmVkTW9k
ZUJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2U6OmJlZ2luUmV0YWluZWRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJldGFp
bmVkTW9kZUJpdG1hcEltYWdlOjplbmRSZXRhaW5lZE1vZGUpOgorICAgICAgICAoUmV0YWluZWRN
b2RlU2F2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9J
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVx
dWVzdEZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0lt
YWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0Q29udGVudHNUb0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQ
aXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpsYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
OjpzZXRMYXN0RGVjb2RlZFJvdyk6CisgICAgICAgIChJbWFnZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6ZGF0YSk6CisgICAgICAgIChJbWFnZURlY29kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaXJzdEltYWdlRnJhbWVXaXRob3V0RGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSZWFkZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpkZWNvZGVCTVApOgorICAgICAgICAo
V2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnByb2Nlc3NSTEVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVkUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlBFR0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0
U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpiYWNr
Z3JvdW5kSXNPYnNjdXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdl
Q29udGVudHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAg
ICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQp
OgorCiAyMDEyLTA3LTE3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgogCiAgICAgICAgIFJlZmFjdG9yaW5nIG1ldGFkYXRhIG9mIEJpdG1hcEltYWdlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA4ZTNhZjlkNjRhZTBmNmM2OWNlMjgzYjEyN2YyZDIyMWM4
N2U1NDY0Li41ZmEzYTRkZTYxN2VkYTYxOTliNGFmYmUyMTA0MTdmNjlkOTY3NTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTA3LTE3ICBIdWFuZyBE
b25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIEFkZCBwYXJhbGxl
bCBpbWFnZSBkZWNvZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdXRob3JlZCBieSBIdWFuZyBEb25nc3VuZyBhbmQgS3dhbmcgWXVsIFNlby4KKwor
ICAgICAgICBNYWtlIGltYWdlIGRlY29kaW5nIG9mZiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRoYXQg
dGhlIG1haW4gdGhyZWFkIGNhbiBzcGVuZCBtb3JlCisgICAgICAgIHRpbWUgaW4gbG9hZGluZywg
cGFyc2luZywgc2NyaXB0aW5nIGFuZCBsYXlvdXQgd2hpbGUgaW1hZ2UgZGVjb2RpbmcgdGhyZWFk
cyBkZWNvZGUKKyAgICAgICAgaW1hZ2VzIGluIHRoZSBiYWNrZ3JvdW5kLgorCisgICAgICAgIFJl
ZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2RvY3VtZW50L3B1Yj9pZD0xMmdmN01oTkhm
dXBlUjNHZFJGLWgyVnpnODZ2aUNid1hxOF9KQnlIS2xnMAorICAgICAgICBmb3IgZGV0YWlsZWQg
ZXhwbGFuYXRpb24uCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKKzIwMTItMDctMTcg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKICAgICAgICAgUHJl
cGFyZSBmb3IgcGFyYWxsZWwgaW1hZ2UgZGVjb2Rlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MWM4ZWUzZDAzMTk5MDY5OTM3MDQ4MjM1NDYwM2FkZDI3Njg3Y2I3Ni4uMzk2MzhlYzczYjE2OGU0
MDQyZDc0NzIxYTk4OWY4Y2RiOGVmN2Q0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OTks
OSArMTc5OSwxMSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPcmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BhcmFsbGVsSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMjczMzQyZmZiMTljMWEwNWQ5MjBmYjhmMDBiMTgxY2RhMjg2MmZlZC4uNmI1N2RmNmJhNzBi
MTMxZGZlZGYyYzM5ZjNlMzRjYzlkMjgxYWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zMjMxLDYgKzMyMzEsMTEgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rhc2hBcnJheS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2Uu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzYmZjYTY1YzFmMGQ3OWZlOTZmMzQ5
ZTkzODAzYzc3MGVhYjJlM2Q4Li45OTJmNDBiYzNkYmQwMDlmMDUxNWE4MDIwZDE5MzIwMjZkZGM0
YWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk2OCwxMCArOTY4LDEyIEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3Qu
Y3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBcCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkUmVjdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnRE
YXRhLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApAQCAtMjA5
MSwxMSArMjA5MywxNCBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludEhhc2guaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJh
bGxlbEltYWdlRGVjb2Rlci5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdl
RGVjb2Rlck9ic2VydmVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91
bmRlZFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9OYXRpdmVJbWFnZVF0LmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDA2OGM5NWFkMzI0ODY1YjMxYjViYTNjM2M2ZThhNGYzMmY3NmE5MmEu
LjBkNDYwNWM2M2YwMTNjZGE0NGM0ZjZkZWIxYzBiOTZmMmI3NGFjMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTM1MjgsMTEgKzM1MjgsMTYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVj
b2Rlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVj
b2Rlck9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3ODdjNDdiMTdkMmIzZWNhN2VkMjQzNzU4YTJk
MmY4M2I4ODdiYTI1Li5kOGRlZDBhZmMwMDZiNjk5OTY1YWZmZTYwYmU3MDdmMjQ5N2Y0MjA2IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk1
NDYsNiArMjk1NDYsMTggQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFBhcmFsbGVsSW1hZ2VEZWNvZGVyLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXRoVHJh
dmVyc2FsU3RhdGUuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjk1NzQsNiArMjk1ODYs
MTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSb3Vu
ZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzQ2NDY4ODUzNzkxNDEyYzZh
ZTcxZmQxZTEwZjM3ZDBmMmI2MmVhNS4uNGU0NGMzNWFhZWE1NGI5ZDRiMmY2ZWVlZWVkYTU0YzEx
YzBkNzM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQyNSw2ICsxNDI1LDggQEAKIAkJNEIzMDQzQ0QwQUUwMzczQjAwQTgy
NjQ3IC8qIEVkaXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3IC8qIEVkaXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRCMzQ4MDkzMEVFRjUwRDQwMEFD
MUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNl
Q0dNYWMubW0gKi87IH07CiAJCTRCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJj
ZUNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QjM0
ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovOyB9OworCQk1QjM0ODA5
MzBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIzNDgwOTEwRUVGNTBENDAw
QUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcCAqLzsgfTsKKwkJNUIzNDgwOTQw
RUVGNTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjM0ODA5MjBFRUY1MEQ0MDBBQzFC
NDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLzsgfTsKIAkJNEI2RkE2RjQwQzM5RTQ4
QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNtYXJ0UmVwbGFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRC
NkZBNkY1MEMzOUU0OEMwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEI2RkE2RjMwQzM5RTQ4QzAwMDg3MDEx
IC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi87IH07CiAJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAv
KiBTbWFydFJlcGxhY2VDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QjZGQTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3Bw
ICovOyB9OwpAQCAtODUzNiw2ICs4NTM4LDggQEAKIAkJNEIzMDQzQ0IwQUUwMzczQjAwQTgyNjQ3
IC8qIEVkaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAv
KiBJbWFnZVNvdXJjZUNHTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSW1hZ2VTb3VyY2VDR01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VTb3VyY2VDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjM0
ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjIwQzM5RTQ4QzAwMDg3MDExIC8qIFNt
YXJ0UmVwbGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydFJlcGxh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEI2RkE2RjMwQzM5RTQ4QzAwMDg3
MDExIC8qIFNtYXJ0UmVwbGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTbWFydFJlcGxhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QjZG
QTZGNjBDMzlFNEExMDAwODcwMTEgLyogU21hcnRSZXBsYWNlQ0YuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21hcnRSZXBsYWNlQ0YuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTk2MDgsNiArMTk2MTIsOCBAQAogCQkJCUE4MEEzOEZEMEU1MEND
ODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAogCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJD
RTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKIAkJCQlCMjc1MzUzNzBCMDUzODE0MDAy
Q0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAorCQkJCTVCMzQ4MDkxMEVFRjUwRDQwMEFD
MUI0MSAvKiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgKi8sCisJCQkJNUIzNDgwOTIwRUVG
NTBENDAwQUMxQjQxIC8qIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggKi8sCiAJCQkJQjI3NTM1
MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovLAogCQkJ
KTsKIAkJCXBhdGggPSBjZzsKQEAgLTI0NTcwLDYgKzI0NTc2LDcgQEAKIAkJCQk3RUU2ODQ2RjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMzQ4MDk0MEVFRjUwRDQwMEFDMUI0MSAvKiBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTUxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQTcxMkIw
MjZGNzAwQzFBMzU5IC8qIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQTkxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYkNvbnZvbHZlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNzc1NSw2ICsyNzc2Miw3IEBACiAJCQkJNTE0Qzc2N0UwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdF
RTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTUwQ0U5MjM0RjAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9u
c2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QjM0ODA5MzBFRUY1MEQ0MDBBQzFCNDEgLyog
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwQTQx
MkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjBB
NjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUZEMzE2MEE4MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252b2x2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzI3NjgwMGNhNTI2MDNkZmI0ZDRjNjE5OTEzZDFiMzQ2
OTAzNGJjZC4uODAzZTI5ZDE0MTIxNTViMWM5ZWNkNDFiNjdlYTczNDA2MGM0ODFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAt
NjQsNiArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc1VuaWZvcm1G
cmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCisgICAgLCBtX2lz
Q2FjaGluZ0ZyYW1lKGZhbHNlKQogewogfQogCkBAIC0yMDgsNyArMjA5LDEyIEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBO
T1RFOiBEb24ndCBjYWxsIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoKSBoZXJlLCB0aGF0IHdpbGwg
dHJ5IHRvCiAgICAgICAgIC8vIGRlY29kZSBhbnkgdW5jYWNoZWQgKGkuZS4gbmV2ZXItZGVjb2Rl
ZCBvcgogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMtcGFzcykgZnJhbWVzIQotICAg
ICAgICBpZiAobV9mcmFtZXNbaV0ubV9mcmFtZSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBsZXRl
KQorCisgICAgICAgIC8vIE5PVEU6IERvbid0IGNsZWFyIHRoZSBjdXJyZW50IGZyYW1lLCBiZWNh
dXNlIHRoZSBmcmFtZSBtaWdodCBoYXZlIGJlZW4gZGVjb2RlZAorICAgICAgICAvLyBpbiByZXRh
aW5lZCBtb2RlIGFuZCBSZW5kZXJJbWFnZSBoYXNuJ3QgcmVuZGVyIHRoaXMgZGVjb2RlZCBpbWFn
ZSB5ZXQuCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZyYW1lIGlzIHJlbW92ZWQgaGVyZSwg
dGhlIGltYWdlIGVsZW1lbnQgd2lsbCBiZSByZW5kZXJlZCBhcyB3aGl0ZSBib3guCisgICAgICAg
IC8vIFRoZSBjdXJyZW50IGZyYW1lIHdpbGwgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHJldGFpbmVk
IG1vZGUgZGVjb2RpbmcgaXMgZmluaXNoZWQuCisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2Zy
YW1lICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUgJiYgbV9jdXJyZW50RnJhbWUgIT0gaSkK
ICAgICAgICAgICAgIGZyYW1lc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRydWUpID8g
MSA6IDApOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVzQ2xlYXJl
ZCk7CkBAIC0yNTYsOCArMjYyLDE4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXND
YWNoZWQoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwg
IW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChtX2lzQ2FjaGluZ0ZyYW1lKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIG1fZnJhbWUgY2FuIGV4aXN0IHdoZW4gbV9pc0Nv
bXBsZXRlIGlzIGZhbHNlLCBzbyB3ZSBuZWVkIHRvIGNhY2hlIGEgbmV3IGZyYW1lIGV2ZW4gaWYg
bV9mcmFtZSBleGlzdHMuCisgICAgLy8gU2VlIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCBmb3Ig
ZXhwbGFuYXRpb24uCisgICAgYm9vbCBuZWVkVG9DYWNoZSA9IGluZGV4ID49IG1fZnJhbWVzLnNp
emUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2lz
Q29tcGxldGU7CisgICAgaWYgKG5lZWRUb0NhY2hlKSB7CisgICAgICAgIG1faXNDYWNoaW5nRnJh
bWUgPSB0cnVlOwogICAgICAgICBjYWNoZUZyYW1lKGluZGV4KTsKKyAgICAgICAgbV9pc0NhY2hp
bmdGcmFtZSA9IGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjcs
MTEgKzI4MywyNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkK
ICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5n
cm93KG51bUZyYW1lcyk7CiAKLSAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4
KTsKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4LCByZXRhaW5lZE1vZGVS
ZW5kZXJpbmcoKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCiti
b29sIEJpdG1hcEltYWdlOjpyZXRhaW5lZE1vZGVSZW5kZXJpbmcoKSBjb25zdAogeworICAgIHJl
dHVybiBtX3JldGFpbmVkTW9kZUltYWdlLmdldCgpICYmIG1fcmV0YWluZWRNb2RlSW1hZ2UtPnJl
dGFpbmVkTW9kZVJlbmRlcmluZygpOworfQorCit2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZl
RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJh
bWVEYXRhLCBib29sIHJldGFpbmVkLCBib29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkKQorewor
ICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgY2FjaGVGcmFtZSBpbmRpcmVjdGx5IGluIHRo
aXMgbWV0aG9kLgorICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKG1fcmV0
YWluZWRNb2RlSW1hZ2UuZ2V0KCksIHJldGFpbmVkKTsKKworICAgIC8vIG1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lIG11c3QgYmUgY2xlYXJlZCBiZWZvcmUgaXQgaXMgcmVwbGFjZWQgd2l0aCBuZXcg
ZGVjb2RlZCBmcmFtZS4KKyAgICAvLyBJZiB3ZSBmb3JnZXQgdG8gY2xlYXIgbV9mcmFtZSwgdGhl
IG9sZCBtX2ZyYW1lIGxlYWtzLgorICAgIC8vIFNlZSBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQg
Zm9yIGV4cGxhbmF0aW9uIHdoeSB0aGUgZGVjb2RlZCBmcmFtZSBtdXN0IGJlIHJlbW92ZWQgaGVy
ZS4KKyAgICBpbnQgZnJhbWVzQ2xlYXJlZCA9IDA7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKQorICAgICAgICBmcmFtZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpbmRleF0uY2xlYXIo
dHJ1ZSkgPyAxIDogMCk7CisgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lc0NsZWFy
ZWQpOworCiAgICAgbV9mcmFtZXNbaW5kZXhdLnNldEZyb21JbWFnZUZyYW1lRGF0YShpbWFnZUZy
YW1lRGF0YSk7CiAKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwpAQCAtMjg4
LDggKzMyMCwxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmIGltYQogICAgICAgICAvLyB0byBkZXRl
cm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KICAgICAgICAgZGVsdGFCeXRlcyAtPSBtX2RlY29kZWRQ
cm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAwOwotICAg
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKSB7
CiAgICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0aGlzLCBk
ZWx0YUJ5dGVzKTsKKworICAgICAgICAgICAgaWYgKChtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBs
ZXRlICYmIHJldGFpbmVkKSB8fCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCkKKyAgICAgICAgICAg
ICAgICBpbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJlY3QodGhpcywgSW50UmVjdChJbnRQb2lu
dCgpLCBzaXplKCkpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMzA5LDcgKzM0NSwxMyBA
QCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
ICAgICAvLyAoc2VlIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGFuZCBmcmFtZUR1cmF0aW9uQXRJbmRl
eCgpKQogICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKKyAgICAv
LyBJZiB0aGUgZnJhbWUgYXQgdGhlIGdpdmVuIGluZGV4IGlzIGRlY29kZWQgYnkgcGFyYWxsZWwg
aW1hZ2UgZGVjb2RlcnMsIG1fZnJhbWUgY2FuIGJlIDAgZXZlbiBpZiBtX2lzQ29tcGxldGUgaXMg
dHJ1ZS4KKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSAmJiBtX2ZyYW1l
c1tpbmRleF0ubV9mcmFtZTsKK30KKworYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSXND
b21wbGV0ZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgobV9jdXJyZW50
RnJhbWUpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKaW5kZXggODE3NzI3M2RjZjkwZGM1YzA0MzU1Nzc2MDI1ZjI2NjlhMDUxMjFiNS4uYzRk
NTZmNzVlNTI3NTVmNDA1MDRiODhkZTc3ZWJhNjllNDBiOWY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CkBAIC0xMjAsMTAgKzEyMSwxMiBAQCBwcml2YXRlOgogLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBjbGFzcyBCaXRtYXBJbWFnZSA6IHB1Ymxp
YyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgeworICAgIGZyaWVuZCBjbGFzcyBS
ZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7
CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworICAgIGZyaWVuZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZSogdG9SZXRhaW5lZE1v
ZGVCaXRtYXBJbWFnZShJbWFnZSopOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJp
dG1hcEltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gMCkKICAgICB7CkBAIC0xOTIsNiArMTk1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CiAgICAgdmlydHVhbCBib29sIGN1
cnJlbnRGcmFtZUhhc0FscGhhKCk7CisgICAgYm9vbCBjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCk7
CiAKICAgICBJbWFnZU9yaWVudGF0aW9uIGN1cnJlbnRGcmFtZU9yaWVudGF0aW9uKCk7CiAgICAg
SW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwpAQCAtMjAx
LDcgKzIwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW1hZ2VTb3VyY2VPYnNlcnZl
cgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29uc3Qg
SW1hZ2VGcmFtZURhdGEmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRl
eChzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiwgYm9vbCByZXRhaW5lZCA9IGZhbHNlLCBi
b29sIHBhcmFsbGVsRGVjb2RlckNhbmNlbGVkID0gZmFsc2UpOwogCiBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwpAQCAtMjkzLDYgKzI5Nyw4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCk7CiAgICAgdmlydHVhbCBDb2xv
ciBzb2xpZENvbG9yKCkgY29uc3Q7CiAgICAgCisgICAgYm9vbCByZXRhaW5lZE1vZGVSZW5kZXJp
bmcoKSBjb25zdDsKKwogICAgIEltYWdlU291cmNlIG1fc291cmNlOwogICAgIG11dGFibGUgSW50
U2l6ZSBtX3NpemU7IC8vIFRoZSBzaXplIHRvIHVzZSBmb3IgdGhlIG92ZXJhbGwgaW1hZ2UgKHdp
bGwganVzdCBiZSB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UpLgogICAgIG11dGFibGUgSW50
U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CkBAIC0zMTcsNiArMzIzLDggQEAgcHJv
dGVjdGVkOgogICAgIG11dGFibGUgdW5zaWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1NpemU7IC8v
IFRoZSBzaXplIG9mIGRhdGEgZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWluZSBpbWFn
ZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNpemVfdCBt
X2ZyYW1lQ291bnQ7CiAKKyAgICBSZWZQdHI8UmV0YWluZWRNb2RlQml0bWFwSW1hZ2U+IG1fcmV0
YWluZWRNb2RlSW1hZ2U7CisKICAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8gV2hldGhl
ciBvciBub3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgogICAgIGJvb2wgbV9jaGVja2VkRm9y
U29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUgZm9yIHNv
bGlkIGNvbG9yLgogCkBAIC0zMjcsNiArMzM1LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9z
aXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgY2FuIG9idGFpbiB0aGUgc2l6
ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1hZ2VJTy4KICAgICBtdXRhYmxl
IGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZl
RnJhbWVDb3VudCA6IDE7CisKKyAgICBib29sIG1faXNDYWNoaW5nRnJhbWUgOiAxOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CmluZGV4IDAyMDMzNGVjZmRkNTZjZWRhNDZlN2FhOWUzMjFlZWYxNTkyZDQzOTEuLjczYjU5M2Y2
NTM1MTQ3NzU4NzM3ZTk0ZDVmZDUxNzVhNThiY2MyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTM1LDkgKzM1LDEzIEBACiAj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhcmFsbGVsSW1h
Z2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgaW50IHNfcmVzb2x1dGlvblRocmVzaG9sZEZvclBh
cmFsbGVsID0gMzAwICogMzAwOworCiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKIHVuc2lnbmVkIEltYWdlU291cmNlOjpzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZSA9
IDEwMjQgKiAxMDI0OwogI2VuZGlmCkBAIC02NiwxMSArNzAsMTUgQEAgSW1hZ2VTb3VyY2U6On5J
bWFnZVNvdXJjZSgpCiB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNp
emVfdCBjbGVhckJlZm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghZGVzdHJveUFsbCkgewotICAgICAgICBpZiAobV9kZWNvZGVy
KQorICAgICAgICAvLyBPbmx5IEdJRiBkZWNvZGVyIGltcGxlbWVudHMgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlLgorICAgICAgICBpZiAobV9kZWNvZGVyICYmICFtX3BhcmFsbGVsRGVjb2RlcikKICAg
ICAgICAgICAgIG1fZGVjb2Rlci0+Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKGNsZWFyQmVmb3JlRnJh
bWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVy
LmdldCgpKQorICAgICAgICBjbGVhclBhcmFsbGVsRGVjb2RlcigpOworCiAgICAgZGVsZXRlIG1f
ZGVjb2RlcjsKICAgICBtX2RlY29kZXIgPSAwOwogICAgIGlmIChkYXRhKQpAQCAtODgsNiArOTYs
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgZXhhbWluZSB0aGUgZGF0
YSBhbmQgaW5zdGFudGlhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGRlY29kZXIg
cGx1Z2luLgogICAgIC8vIElmIGluc3VmZmljaWVudCBieXRlcyBhcmUgYXZhaWxhYmxlIHRvIGRl
dGVybWluZSB0aGUgaW1hZ2UgdHlwZSwgbm8gZGVjb2RlciBwbHVnaW4gd2lsbCBiZQogICAgIC8v
IG1hZGUuCisKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpIHsKKyAgICAgICAgQVNT
RVJUKG1fZGVjb2Rlcik7CisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5zZXREYXRhKGRhdGEs
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1f
ZGVjb2RlcikgewogICAgICAgICBtX2RlY29kZXIgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbWFnZVNv
dXJjZVB0cj4oSW1hZ2VEZWNvZGVyOjpjcmVhdGUoKmRhdGEsIG1fYWxwaGFPcHRpb24sIG1fZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQpAQCAtMTAyLDExICsxMTcsMTUgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiBTdHJpbmcgSW1h
Z2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxl
bERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+ZmlsZW5h
bWVFeHRlbnNpb24oKTsKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFt
ZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2
YWlsYWJsZSgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZh
aWxhYmxlKCk7CiB9CiAKQEAgLTExNiw2ICsxMzUsOCBAQCBJbnRTaXplIEltYWdlU291cmNlOjpz
aXplKFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0T3JpZW50YXRpb24p
CiAgICAgaWYgKHNob3VsZFJlc3BlY3RPcmllbnRhdGlvbiA9PSBSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAorICAgIGlmIChtX3BhcmFsbGVsRGVj
b2Rlci5nZXQoKSkKKyAgICAgICAgcmV0dXJuIG1fcGFyYWxsZWxEZWNvZGVyLT5zaXplKCk7CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQog
CkBAIC0xMjUsNiArMTQ2LDggQEAgSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eChzaXplX3QgaW5kZXgsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bQogICAgIGlmIChzaG91
bGRSZXNwZWN0T3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBtX3BhcmFsbGVsRGVjb2Rlci0+c2l6ZSgpOwogICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogSW50U2l6ZSgpOwog
fQogCkBAIC0xNDAsMjMgKzE2MywxMjAgQEAgc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0
aXRpb25Db3VudCgpCiB7CisgICAgaWYgKG1fcGFyYWxsZWxEZWNvZGVyLmdldCgpKQorICAgICAg
ICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rl
ci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTm9uZTsKIH0KIAogc2l6ZV90IEltYWdl
U291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIu
Z2V0KCkpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29k
ZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sIHJldGFpbmVkTW9kZVJlbmRlcmluZykK
K3sKKyAgICBBU1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgaW5kZXgpKTsKKyAgICBB
U1NFUlQoIShyZXRhaW5lZE1vZGVSZW5kZXJpbmcgJiYgIW1fb2JzZXJ2ZXIpKTsKKworICAgIGlm
ICghbV9kZWNvZGVyKSB7CisgICAgICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoaW5kZXgsIEltYWdlRnJhbWVEYXRhKCkpOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKKyAgICB9CisKKyAgICBpZiAoIXJldGFpbmVkTW9kZVJlbmRlcmluZyB8fCAhbV9vYnNl
cnZlciB8fCBmaXJzdEZyYW1lSXNDb21wbGV0ZSgpKQorICAgICAgICByZXR1cm4gc2VyaWFsRGVj
b2RlKGluZGV4KTsKKworICAgIGlmIChzaG91bGREZWNvZGVQYXJhbGxlbCgpKSB7CisgICAgICAg
IHBhcmFsbGVsRGVjb2RlKCk7CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YSgpOworICAg
IH0KKworICAgIHJldHVybiBzZXJpYWxEZWNvZGUoaW5kZXgpOworfQorCitib29sIEltYWdlU291
cmNlOjpzaG91bGREZWNvZGVQYXJhbGxlbCgpCit7CisgICAgQVNTRVJUKG1fZGVjb2Rlcik7CisK
KyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKFdURjo6bnVtYmVyT2ZQcm9jZXNzb3JDb3JlcygpID09IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFN0cmluZyBmaWxlRXh0ID0gZmlsZW5hbWVFeHRlbnNpb24oKTsK
KyAgICBpZiAoZmlsZUV4dCA9PSAiaWNvIiB8fCBmaWxlRXh0ID09ICJnaWYiKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzU2l6ZUF2YWlsYWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoc2l6ZSgpLmFyZWEoKSA8IHNfcmVzb2x1dGlvblRocmVzaG9s
ZEZvclBhcmFsbGVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBJbWFnZVNvdXJjZTo6Zmlyc3RGcmFtZUlzQ29tcGxldGUoKQoreworICAgIEFT
U0VSVChtX2RlY29kZXIpOworICAgIEltYWdlRnJhbWUqIGltYWdlRnJhbWUgPSAwOworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIGltYWdlRnJhbWUgPSBtX2RlY29kZXItPmZp
cnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZSAmJiBm
cmFtZUlzQ29tcGxldGVBdEluZGV4KGltYWdlRnJhbWUpOworfQorCit2b2lkIEltYWdlU291cmNl
OjpwYXJhbGxlbERlY29kZSgpCit7CisgICAgY3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQo
KTsKKyAgICBtX3BhcmFsbGVsRGVjb2Rlci0+ZGVjb2RlKCk7Cit9CisKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OmRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYgaW1hZ2VGcmFtZURhdGEpCit7Cisg
ICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0
SW5kZXgoMCwgaW1hZ2VGcmFtZURhdGEsIHRydWUpOworCisgICAgaWYgKGltYWdlRnJhbWVEYXRh
Lm1faXNDb21wbGV0ZSkKKyAgICAgICAgY2xlYXJQYXJhbGxlbERlY29kZXIoKTsKK30KKwordm9p
ZCBJbWFnZVNvdXJjZTo6Y3JlYXRlUGFyYWxsZWxEZWNvZGVySWZOZWVkZWQoKQoreworICAgIGlm
ICghbV9wYXJhbGxlbERlY29kZXIpCisgICAgICAgIG1fcGFyYWxsZWxEZWNvZGVyID0gYWRvcHRS
ZWYobmV3IFBhcmFsbGVsSW1hZ2VEZWNvZGVyKHRoaXMsIG1fZGVjb2RlcikpOworfQorCit2b2lk
IEltYWdlU291cmNlOjpjbGVhclBhcmFsbGVsRGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fb2Jz
ZXJ2ZXIpOworICAgIG1fcGFyYWxsZWxEZWNvZGVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9wYXJh
bGxlbERlY29kZXIuY2xlYXIoKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OnNl
cmlhbERlY29kZShzaXplX3QgaW5kZXgpCit7CisgICAgYm9vbCBwYXJhbGxlbERlY29kZXJDYW5j
ZWxlZCA9IGZhbHNlOworICAgIC8vIFJlbmRlckltYWdlIGFuZCBDYW52YXNFbGVtZW50IGNhbiBz
aGFyZSB0aGUgc2FtZSBDYWNoZWRJbWFnZS4KKyAgICBpZiAobV9wYXJhbGxlbERlY29kZXIuZ2V0
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fb2JzZXJ2ZXIpOworICAgICAgICBjbGVhclBhcmFsbGVs
RGVjb2RlcigpOworICAgICAgICBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCA9IHRydWU7CisgICAg
fQorCiAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgs
IGltYWdlRnJhbWVEYXRhKTsKKworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2Vy
dmVyLT5kaWRSZWNlaXZlRnJhbWVBdEluZGV4KGluZGV4LCBpbWFnZUZyYW1lRGF0YSwgZmFsc2Ug
LyogcmV0YWluZWRNb2RlICovLCBwYXJhbGxlbERlY29kZXJDYW5jZWxlZCk7CisKKyAgICByZXR1
cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIEltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogeworICAgIEFTU0VSVCghbV9wYXJhbGxlbERl
Y29kZXIpOwogICAgIGlmICghbV9kZWNvZGVyKQogICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKaW5kZXggMmU2NGQ3ZGVhNzM3MzRlN2Y3MDhhZjYwZDI5YTMxYjg0MTJmMTgwOS4uYzQyNzll
YzlmY2FkZDQzNDI1ZDMzMmJkZDgzOWJiNTVjYzUyNGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yOSw2ICsyOSw5IEBACiAjZGVm
aW5lIEltYWdlU291cmNlX2gKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpZiAh
VVNFKENHKQorI2luY2x1ZGUgIlBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIuaCIKKyNlbmRp
ZgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KQEAgLTY1LDYgKzY4LDkgQEAgY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIGNsYXNzIEltYWdl
U291cmNlT2JzZXJ2ZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CisjaWYgIVVT
RShDRykKK2NsYXNzIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOworI2VuZGlmCiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKICNpZiBVU0UoQ0cpCkBAIC0xNDMsNyArMTQ5LDExIEBAIGNvbnN0IGludCBjQW5p
bWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAt
MTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi1jbGFzcyBJbWFnZVNvdXJjZSB7
CitjbGFzcyBJbWFnZVNvdXJjZQorI2lmICFVU0UoQ0cpCisgICAgOiBwdWJsaWMgUGFyYWxsZWxJ
bWFnZURlY29kZXJPYnNlcnZlcgorI2VuZGlmCit7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VTb3VyY2UpOwogcHVibGljOgogICAgIGVudW0gQWxwaGFPcHRpb24gewpAQCAtMjEwLDE3
ICsyMjAsMjQgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKIAot
ICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigp
IHdpdGggYSBoaWdoZXIgaW5kZXg7CisgICAgLy8gTk9URTogQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICB2b2lkIHJlcXVlc3RGcmFtZUF0
SW5kZXgoc2l6ZV90KTsKLSAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90KTsKKyAgICAvLyBOT1RFOiBJZiBJbWFnZVNvdXJjZSBoYXMgSW1hZ2VTb3VyY2VPYnNlcnZl
ciwgdGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlc3VsdCB2aWEgZGlkRGVjb2RlKCkuCisgICAgLy8g
T3RoZXJ3aXNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSByZXN1bHQuIGUuZy4gR3JhcGhpY3ND
b250ZXh0M0QKKyAgICBJbWFnZUZyYW1lRGF0YSByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCwg
Ym9vbCByZXRhaW5lZE1vZGVSZW5kZXJpbmcgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU1BR0Vf
REVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhQaXhlbHNQZXJE
ZWNvZGVkSW1hZ2UoKSB7IHJldHVybiBzX21heFBpeGVsc1BlckRlY29kZWRJbWFnZTsgfQogICAg
IHN0YXRpYyB2b2lkIHNldE1heFBpeGVsc1BlckRlY29kZWRJbWFnZSh1bnNpZ25lZCBtYXhQaXhl
bHMpIHsgc19tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UgPSBtYXhQaXhlbHM7IH0KICNlbmRpZgog
CisjaWYgIVVTRShDRykKKyAgICAvLyBQYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpOworI2VuZGlmCisK
IHByaXZhdGU6CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7
CiAjaWYgVVNFKENHKQogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCkBAIC0yMzMsOCArMjUwLDIwIEBAIHBy
aXZhdGU6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFt
ZSopIGNvbnN0OwogI2VuZGlmCiAKKyNpZiAhVVNFKENHKQorICAgIHZvaWQgY3JlYXRlUGFyYWxs
ZWxEZWNvZGVySWZOZWVkZWQoKTsKKyAgICB2b2lkIGNsZWFyUGFyYWxsZWxEZWNvZGVyKCk7Cisg
ICAgYm9vbCBzaG91bGREZWNvZGVQYXJhbGxlbCgpOworICAgIGJvb2wgZmlyc3RGcmFtZUlzQ29t
cGxldGUoKTsKKyAgICB2b2lkIHBhcmFsbGVsRGVjb2RlKCk7CisgICAgSW1hZ2VGcmFtZURhdGEg
c2VyaWFsRGVjb2RlKHNpemVfdCk7CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBt
X2RlY29kZXI7CiAgICAgSW1hZ2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKKwogICAgIEFs
cGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
bV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9E
T1dOX1NBTVBMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCmluZGV4IDcyYWY3MDhjN2VjZDExZjgxNmU4YThlMDI3
MjkwMjYwNjA4MjE0MjguLmQzMjA3ODJkOGU4MzBjMDRlOTlmMDFlMTQzZmQyOWE5NGE4MzIwZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZU9ic2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSW1hZ2VGcmFtZURhdGE7CiAv
LyBJbnRlcmZhY2UgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIEltYWdlU291
cmNlLCBpbmNsdWRpbmcgZGVjb2RpbmcuCiBjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXplX3QsIGNv
bnN0IEltYWdlRnJhbWVEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJh
bWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmLCBib29sIHJldGFpbmVkID0g
ZmFsc2UsIGJvb2wgcGFyYWxsZWxEZWNvZGVyQ2FuY2VsZWQgPSBmYWxzZSkgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW1hZ2VTb3VyY2VPYnNlcnZlcigpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29k
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZiOWNmYWY1NTMxMTM3ODQ1MGQzMzE0NjQyZWQxYzg4MzY5NDdh
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXJhbGxlbEltYWdlRGVjb2Rlci5jcHAKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQYXJhbGxlbEltYWdlRGVjb2Rlci5oIgor
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFBhcmFsbGVsRnJhbWVEYXRhOwordm9pZCBkaWREZWNvZGVUYXNrQ2FsbGJhY2so
UGFyYWxsZWxGcmFtZURhdGEqKTsKK3N0YXRpYyBJbWFnZUZyYW1lRGF0YSBjcmVhdGVJbWFnZUZy
YW1lRGF0YShQYXJhbGxlbEZyYW1lRGF0YSopOworCitQYXJhbGxlbEltYWdlRGVjb2Rlcjo6UGFy
YWxsZWxJbWFnZURlY29kZXIoUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciogb2JzZXJ2ZXIs
IEltYWdlRGVjb2RlciogZGVjb2RlcikKKyAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAg
LCBtX2lzQWxsRGF0YVJlY2VpdmVkKGZhbHNlKQorICAgICwgbV9ieXRlc09mRGF0YUNvbnN1bWVk
KDApCisgICAgLCBtX2ltYWdlRGVjb2RlcigwKQoreworICAgIGluaXRpYWxpemUoZGVjb2Rlcik7
Cit9CisKK1BhcmFsbGVsSW1hZ2VEZWNvZGVyOjp+UGFyYWxsZWxJbWFnZURlY29kZXIoKQorewor
ICAgIEFTU0VSVCghdmFsaWQoKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6Omlu
aXRpYWxpemUoSW1hZ2VEZWNvZGVyKiBkZWNvZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGRlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpICYmICFkZWNvZGVy
LT5zaXplKCkuaXNFbXB0eSgpKTsKKworICAgIG1fc2l6ZSA9IGRlY29kZXItPnNpemUoKTsKKyAg
ICBtX2ZpbGVuYW1lRXh0ZW5zaW9uID0gZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKTsKKwor
ICAgIHNldERhdGEoZGVjb2Rlci0+ZGF0YSgpLCBkZWNvZGVyLT5pc0FsbERhdGFSZWNlaXZlZCgp
KTsKKyAgICBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPSAwOworCisgICAgbV9pbWFnZUZyYW1lLnNl
dFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX2ltYWdlRGVj
b2RlciA9IGRlY29kZXI7CisgICAgbV9pbWFnZURlY29kZXItPnNldERhdGEoMCwgZmFsc2UpOwor
ICAgIC8vIEFmdGVyIHRoaXMgbGluZSwgaXQgaXMgaWxsZWdhbCBmb3IgdGhlIG1haW4gdGhyZWFk
IHRvIGFjY2VzcyBtX2ltYWdlRGVjb2Rlci4KKworICAgIC8vIFRoaXMgbXVzdCBiZSB0aGUgbGFz
dCBsaW5lIGJlY2F1c2UgSW1hZ2VEZWNvZGVXb3JrZXIgZ3VhcmFudGVlcworICAgIC8vIHRoZSB2
aXNpYmlsaXR5IG9mIG1lbWJlcnMgaW4gdGhlIHRhc2sgdGhyZWFkLgorICAgIG1fZGVjb2RlV29y
a2VyID0gSW1hZ2VEZWNvZGVXb3JrZXI6OmFjcXVpcmVTaGFyZWRXb3JrZXIoKTsKK30KKwordm9p
ZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6aW52YWxpZGF0ZSgpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworCisgICAgaWYgKG1fZGVj
b2RlV29ya2VyLmdldCgpKSB7CisgICAgICAgIG1fZGVjb2RlV29ya2VyLT5pbnZhbGlkYXRlKCk7
CisgICAgICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgfQorICAgIC8vIFRoZSBtYWlu
IHRocmVhZCBjYW4gdXNlIG1faW1hZ2VEZWNvZGVyIGJlY2F1c2Ugb3RoZXIgdGhyZWFkcyBkbyBu
b3QgYWNjZXNzIG1faW1hZ2VEZWNvZGVyIGFmdGVyIHRoaXMgbGluZS4KKworICAgIG1faW1hZ2VE
ZWNvZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSwgbV9pc0FsbERhdGFSZWNlaXZlZCk7CisKKyAg
ICBtX3NpemUgPSBJbnRTaXplKCk7CisgICAgbV9maWxlbmFtZUV4dGVuc2lvbiA9ICIiOworCisg
ICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGZhbHNlOworICAgIG1fZGF0YS5jbGVhcigpOworICAg
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IDA7CisKKyAgICBtX2ltYWdlRnJhbWUgPSBJbWFnZUZy
YW1lKCk7CisKKyAgICBpZiAobV9kYXRhRm9yVGFzay5nZXQoKSkKKyAgICAgICAgbV9kYXRhRm9y
VGFzay5jbGVhcigpOworCisgICAgbV9pbWFnZURlY29kZXIgPSAwOworfQorCit2b2lkIFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2lzQWxsRGF0
YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOworICAgIG1fZGF0YSA9IGRhdGE7Cit9CisKK3Zv
aWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRlY29kZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9pbWFnZURlY29kZXIpOworICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSk7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50PiBzZWdtZW50ID0g
ZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7CisgICAgaWYgKCFzZWdtZW50LmdldCgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9kZWNvZGVXb3JrZXItPnBvc3RUYXNrKGJpbmQoJlBhcmFsbGVsSW1h
Z2VEZWNvZGVyOjpkZWNvZGVUYXNrLCB0aGlzLCBzZWdtZW50LnJlbGVhc2UoKSkpOworfQorCitQ
YXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0YVNlZ21lbnQ+IFBhcmFs
bGVsSW1hZ2VEZWNvZGVyOjpleHRyYWN0U2VnbWVudEZvclRhc2soKQoreworICAgIEFTU0VSVCht
X2J5dGVzT2ZEYXRhQ29uc3VtZWQgPj0gMCAmJiBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQgPD0gbV9k
YXRhLT5zaXplKCkpOworCisgICAgaW50IHNpemVPZlNlZ21lbnQgPSBtX2RhdGEtPnNpemUoKSAt
IG1fYnl0ZXNPZkRhdGFDb25zdW1lZDsKKyAgICBpZiAoIXNpemVPZlNlZ21lbnQpCisgICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4oKTsKKworICAgIE93blB0cjxF
bmNvZGVkRGF0YVNlZ21lbnQ+IHNlZ21lbnQoYWRvcHRQdHIobmV3IEVuY29kZWREYXRhU2VnbWVu
dCgpKSk7CisgICAgY29uc3QgY2hhciogc3JjUHRyID0gbV9kYXRhLT5kYXRhKCkgKyBtX2J5dGVz
T2ZEYXRhQ29uc3VtZWQ7CisgICAgc2VnbWVudC0+bV9zZWdtZW50LmFwcGVuZChzcmNQdHIsIHNp
emVPZlNlZ21lbnQpOworICAgIG1fYnl0ZXNPZkRhdGFDb25zdW1lZCA9IG1fZGF0YS0+c2l6ZSgp
OworCisgICAgc2VnbWVudC0+bV9pc0FsbERhdGFSZWNlaXZlZCA9IG1faXNBbGxEYXRhUmVjZWl2
ZWQ7CisKKyAgICByZXR1cm4gc2VnbWVudC5yZWxlYXNlKCk7Cit9CisKK3N0cnVjdCBQYXJhbGxl
bEZyYW1lRGF0YSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFyYWxsZWxGcmFtZURhdGEp
OworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFBh
cmFsbGVsRnJhbWVEYXRhKFBhc3NSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+IHBhcmFsbGVs
RGVjb2RlcikKKyAgICAgICAgOiBtX3BhcmFsbGVsRGVjb2RlcihwYXJhbGxlbERlY29kZXIpCisg
ICAgICAgICwgbV9kZWNvZGVkU2VnbWVudCgpCisgICAgICAgICwgbV9zdGF0dXMoSW1hZ2VGcmFt
ZTo6RnJhbWVFbXB0eSkKKyAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAgICAgICAsIG1f
cHJlbXVsdGlwbHlBbHBoYSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICB+UGFyYWxsZWxGcmFt
ZURhdGEoKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8UGFyYWxsZWxJbWFnZURlY29kZXI+
IG1fcGFyYWxsZWxEZWNvZGVyOworICAgIE93bkFycmF5UHRyPEltYWdlRnJhbWU6OlBpeGVsRGF0
YT4gbV9kZWNvZGVkU2VnbWVudDsKKyAgICBJbWFnZUZyYW1lOjpGcmFtZVN0YXR1cyBtX3N0YXR1
czsKKyAgICBib29sIG1faGFzQWxwaGE7CisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7Cisg
ICAgSW50UmVjdCBtX2RlY29kZWRSZWN0OworfTsKKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rl
cjo6ZGVjb2RlVGFzayhQYXNzT3duUHRyPFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpFbmNvZGVkRGF0
YVNlZ21lbnQ+IHBhc3NTZWdtZW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2ltYWdlRGVjb2Rlcik7CisKKyAgICBPd25QdHI8RW5jb2RlZERhdGFTZWdt
ZW50PiBzZWdtZW50ID0gcGFzc1NlZ21lbnQ7CisKKyAgICAvLyAxLiBTZW5kIHNlZ21lbnQgZGF0
YSB0byBJbWFnZURlY29kZXIuCisgICAgaWYgKCFtX2RhdGFGb3JUYXNrKSB7CisgICAgICAgIG1f
ZGF0YUZvclRhc2sgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgLy8gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBkb2VzIG5vdCBhbGxvdyB0d28gdGhy
ZWFkcyB0byBhY2Nlc3Mgb25lIFJlZkNvdW50ZWQgb2JqZWN0LgorICAgICAgICAvLyBtX2RhdGFG
b3JUYXNrIGlzIHVzZWQgYnkgYm90aCB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSB0YXNrIHRocmVh
ZDoKKyAgICAgICAgLy8gVGhlIHRhc2sgdGhyZWFkIGNyZWF0ZXMsIHVzZXMgYW5kIHJlbW92ZXMg
bV9kYXRhRm9yVGFzay4gVGhlIG1haW4gdGhyZWFkIG1heSByZW1vdmUKKyAgICAgICAgLy8gbV9k
YXRhRm9yVGFzayBpZiB0aGUgdGFzayB0aHJlYWQgY291bGQgbm90IHJlbW92ZSBtX2RhdGFGb3JU
YXNrLgorICAgICAgICAvLworICAgICAgICAvLyBQYXJhbGxlbCBpbWFnZSBkZWNvZGVycyBtYW5h
Z2UgbV9kYXRhRm9yVGFzayBpbiBhIHRocmVhZC1zYWZlIHdheS4gSG93ZXZlciwKKyAgICAgICAg
Ly8gd2UgY2FuJ3QgdGVsbCB0aGUgdmVyaWZpZXIgdGhhdCB3ZSBhcmUgc2FmZSBieSBzaW1wbHkg
cGFzc2luZyBhIG11dGV4CisgICAgICAgIC8vIGJlY2F1c2UgbGliZGlzcGF0Y2ggZG9lcyBub3Qg
ZXZlbiBndWFyYW50ZWUgZGVjb2RlVGFzayBpcyBjYWxsZWQgYnkgdGhlIHNhbWUgdGhyZWFkCisg
ICAgICAgIC8vIGVhY2ggdGltZS4gU28gdHVybiBvZmYgdGhlIHZlcmlmaWVyIGhlcmUuCisgICAg
ICAgIG1fZGF0YUZvclRhc2stPnR1cm5PZmZWZXJpZmllcigpOworI2VuZGlmCisgICAgfQorICAg
IG1fZGF0YUZvclRhc2stPmFwcGVuZChzZWdtZW50LT5tX3NlZ21lbnQpOworICAgIG1faW1hZ2VE
ZWNvZGVyLT5zZXREYXRhKG1fZGF0YUZvclRhc2suZ2V0KCksIHNlZ21lbnQtPm1faXNBbGxEYXRh
UmVjZWl2ZWQpOworCisgICAgSW1hZ2VGcmFtZSogb2xkQnVmZmVyID0gbV9pbWFnZURlY29kZXIt
PmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAgICBpbnQgbGFzdERlY29kZWRSb3cg
PSBvbGRCdWZmZXIgPyBvbGRCdWZmZXItPmxhc3REZWNvZGVkUm93KCkgOiAwOworCisgICAgLy8g
Mi4gRGVjb2RlIGFuIGltYWdlIGluY3JlbWVudGFsbHkuCisgICAgSW1hZ2VGcmFtZSogYnVmZmVy
ID0gbV9pbWFnZURlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleCgwKTsKKyAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKKyAgICAg
ICAgQVNTRVJUKCFzZWdtZW50LT5tX2lzQWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIDMuIE1ha2UgYSBQYXJhbGxlbEZyYW1lRGF0YSBpbiBvcmRlciB0
byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICBQYXJhbGxlbEZyYW1lRGF0YSogcGFy
YWxsZWxGcmFtZURhdGEgPSBuZXcgUGFyYWxsZWxGcmFtZURhdGEodGhpcyk7CisgICAgcGFyYWxs
ZWxGcmFtZURhdGEtPm1fc3RhdHVzID0gYnVmZmVyLT5zdGF0dXMoKTsKKyAgICBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9oYXNBbHBoYSA9IGJ1ZmZlci0+aGFzQWxwaGEoKTsKKyAgICBwYXJhbGxlbEZy
YW1lRGF0YS0+bV9wcmVtdWx0aXBseUFscGhhID0gYnVmZmVyLT5wcmVtdWx0aXBseUFscGhhKCk7
CisKKyAgICBpbnQgbmV3TGFzdERlY29kZWRSb3cgPSBidWZmZXItPmxhc3REZWNvZGVkUm93KCk7
CisgICAgLy8gT25seSBpbiBCTVAsIGxhc3REZWNvZGVkUm93IGNhbiBiZSBiaWdnZXIgdGhhbiBu
ZXdMYXN0RGVjb2RlZFJvdy4KKyAgICBpbnQgbGFzdERlY29kZWRNaW5Sb3cgPSBzdGQ6Om1pbihs
YXN0RGVjb2RlZFJvdywgbmV3TGFzdERlY29kZWRSb3cpOworICAgIGludCBsYXN0RGVjb2RlZE1h
eFJvdyA9IHN0ZDo6bWF4KGxhc3REZWNvZGVkUm93LCBuZXdMYXN0RGVjb2RlZFJvdyk7CisgICAg
cGFyYWxsZWxGcmFtZURhdGEtPm1fZGVjb2RlZFJlY3QgPSBJbnRSZWN0KDAsIGxhc3REZWNvZGVk
TWluUm93LCBtX2ltYWdlRGVjb2Rlci0+c2l6ZSgpLndpZHRoKCksIGxhc3REZWNvZGVkTWF4Um93
IC0gbGFzdERlY29kZWRNaW5Sb3cgKyAxKTsKKworICAgIC8vIDQuIENyZWF0ZSBkZWNvZGVkIHNl
Z21lbnQgZGF0YSBpbiBvcmRlciB0byBwYXNzIGl0IHRvIHRoZSBtYWluIHRocmVhZC4KKyAgICAv
LyAgICBJZiB0aGUgc3RhdHVzIGlzIEZyYW1lQ29tcGxldGUsIHRoaXMgaXMgbm90IG5lZWRlZCBi
ZWNhdXNlIGEgTmF0aXZlSW1hZ2Ugd2lsbCBiZSBjcmVhdGVkIHVzaW5nIHRoZSBkZWNvZGVyIG9u
IHRoZSBtYWluIHRocmVhZC4KKyAgICBpZiAocGFyYWxsZWxGcmFtZURhdGEtPm1fc3RhdHVzID09
IEltYWdlRnJhbWU6OkZyYW1lUGFydGlhbCkgeworICAgICAgICBpbnQgc2VnbWVudFNpemUgPSBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkUmVjdC5zaXplKCkuYXJlYSgpOworICAgICAgICBw
YXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2VnbWVudCA9IGFkb3B0QXJyYXlQdHIobmV3IElt
YWdlRnJhbWU6OlBpeGVsRGF0YVtzZWdtZW50U2l6ZV0pOworCisgICAgICAgIEltYWdlRnJhbWU6
OlBpeGVsRGF0YSogc2VnbWVudEFkZHIgPSBwYXJhbGxlbEZyYW1lRGF0YS0+bV9kZWNvZGVkU2Vn
bWVudC5nZXQoKTsKKyAgICAgICAgbWVtY3B5KHNlZ21lbnRBZGRyLCBidWZmZXItPmdldEFkZHIo
MCwgbGFzdERlY29kZWRNaW5Sb3cpLCBzZWdtZW50U2l6ZSAqIHNpemVvZihJbWFnZUZyYW1lOjpQ
aXhlbERhdGEpKTsKKyAgICB9IGVsc2UgeyAvLyBGcmFtZUNvbXBsZXRlCisgICAgICAgIG1faW1h
Z2VEZWNvZGVyLT5zZXREYXRhKDAsIGZhbHNlKTsKKyAgICAgICAgbV9kYXRhRm9yVGFzay5jbGVh
cigpOworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZChkaWREZWNvZGVUYXNrQ2Fs
bGJhY2ssIHBhcmFsbGVsRnJhbWVEYXRhKSk7Cit9CisKK3ZvaWQgZGlkRGVjb2RlVGFza0NhbGxi
YWNrKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIC8vIElmIGEgY2xpZW50IGNhbGxlZCBQYXJhbGxlbEltYWdl
RGVjb2Rlcjo6Y2xlYXIoKSwgUGFyYWxsZWxJbWFnZURlY29kZXIgaXMgaW52YWxpZGF0ZWQuCisg
ICAgaWYgKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3BhcmFsbGVsRGVjb2Rlci0+dmFsaWQoKSkKKyAg
ICAgICAgcGFyYWxsZWxGcmFtZURhdGEtPm1fcGFyYWxsZWxEZWNvZGVyLT5kaWREZWNvZGVUYXNr
KHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAgICBkZWxldGUgcGFyYWxsZWxGcmFtZURhdGE7Cit9CisK
K0ltYWdlRnJhbWVEYXRhIGNyZWF0ZUltYWdlRnJhbWVEYXRhKFBhcmFsbGVsRnJhbWVEYXRhKiBw
YXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YTsK
KyAgICBpbWFnZUZyYW1lRGF0YS5tX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRp
b247CisgICAgaW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlID0gcGFyYWxsZWxGcmFtZURhdGEt
Pm1fc3RhdHVzID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgaW1hZ2VGcmFtZURh
dGEubV9oYXNBbHBoYSA9ICFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgfHwgcGFyYWxsZWxG
cmFtZURhdGEtPm1faGFzQWxwaGE7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOworfQorCit2
b2lkIFBhcmFsbGVsSW1hZ2VEZWNvZGVyOjpkaWREZWNvZGVUYXNrKFBhcmFsbGVsRnJhbWVEYXRh
KiBwYXJhbGxlbEZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChwYXJhbGxlbEZyYW1lRGF0YS0+bV9zdGF0dXMgIT0gSW1hZ2VGcmFtZTo6RnJhbWVF
bXB0eSk7CisKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUltYWdl
RnJhbWVEYXRhKHBhcmFsbGVsRnJhbWVEYXRhKTsKKworICAgIGlmICghaW1hZ2VGcmFtZURhdGEu
bV9pc0NvbXBsZXRlKQorICAgICAgICBkaWREZWNvZGVQYXJ0aWFsKGltYWdlRnJhbWVEYXRhLCBw
YXJhbGxlbEZyYW1lRGF0YSk7CisgICAgZWxzZQorICAgICAgICBkaWREZWNvZGVDb21wbGV0ZShp
bWFnZUZyYW1lRGF0YSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURlY29kZXI6OmRpZERlY29k
ZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhLCBQYXJhbGxlbEZyYW1lRGF0
YSogcGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGFwcGVuZERlY29kZWREYXRhVG9JbWFnZUZyYW1lKHBhcmFsbGVsRnJhbWVEYXRhKTsKKyAg
ICBzeW5jSW1hZ2VGcmFtZShwYXJhbGxlbEZyYW1lRGF0YSk7CisKKyAgICBpbWFnZUZyYW1lRGF0
YS5tX2ZyYW1lID0gbV9pbWFnZUZyYW1lLmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2Vy
dmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFtZURhdGEpOworfQorCit2b2lkIFBhcmFsbGVsSW1hZ2VE
ZWNvZGVyOjphcHBlbmREZWNvZGVkRGF0YVRvSW1hZ2VGcmFtZShQYXJhbGxlbEZyYW1lRGF0YSog
cGFyYWxsZWxGcmFtZURhdGEpCit7CisgICAgY29uc3QgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBj
b25zdCBzZWdtZW50QWRkciA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRTZWdtZW50Lmdl
dCgpOworICAgIGludCBzZWdtZW50U2l6ZSA9IHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRS
ZWN0LnNpemUoKS5hcmVhKCk7CisgICAgSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKiBkZXN0QWRkciA9
IG1faW1hZ2VGcmFtZS5nZXRBZGRyKDAsIHBhcmFsbGVsRnJhbWVEYXRhLT5tX2RlY29kZWRSZWN0
LnkoKSk7CisgICAgbWVtY3B5KGRlc3RBZGRyLCBzZWdtZW50QWRkciwgc2VnbWVudFNpemUgKiBz
aXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKSk7Cit9CisKK3ZvaWQgUGFyYWxsZWxJbWFnZURl
Y29kZXI6OnN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKiBwYXJhbGxlbEZyYW1lRGF0
YSkKK3sKKyAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSBuZWVkZWQgdG8gY3JlYXRlIGEg
dmFsaWQgbmF0aXZlIGltYWdlIGluIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKS4KKyAg
ICBtX2ltYWdlRnJhbWUuc2V0U3RhdHVzKHBhcmFsbGVsRnJhbWVEYXRhLT5tX3N0YXR1cyk7Cisg
ICAgbV9pbWFnZUZyYW1lLnNldEhhc0FscGhhKHBhcmFsbGVsRnJhbWVEYXRhLT5tX2hhc0FscGhh
KTsKKyAgICBtX2ltYWdlRnJhbWUuc2V0UHJlbXVsdGlwbHlBbHBoYShwYXJhbGxlbEZyYW1lRGF0
YS0+bV9wcmVtdWx0aXBseUFscGhhKTsKK30KKwordm9pZCBQYXJhbGxlbEltYWdlRGVjb2Rlcjo6
ZGlkRGVjb2RlQ29tcGxldGUoSW1hZ2VGcmFtZURhdGEmIGltYWdlRnJhbWVEYXRhKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2RlY29kZVdvcmtlci0+aW52YWxpZGF0
ZSgpOworICAgIG1fZGVjb2RlV29ya2VyLmNsZWFyKCk7CisgICAgLy8gVGhlIG1haW4gdGhyZWFk
IGNhbiB1c2UgbV9pbWFnZURlY29kZXIgYmVjYXVzZSBvdGhlciB0aHJlYWRzIGRvIG5vdCBhY2Nl
c3MgbV9pbWFnZURlY29kZXIgYWZ0ZXIgdGhpcyBsaW5lLgorCisgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gbV9pbWFnZURlY29kZXItPmZpcnN0SW1hZ2VGcmFtZVdpdGhvdXREZWNvZGUoKTsKKyAg
ICBBU1NFUlQoYnVmZmVyKTsKKworICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBidWZmZXIt
PmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICBtX29ic2VydmVyLT5kaWREZWNvZGUoaW1hZ2VGcmFt
ZURhdGEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmYwYTM4YWI3ODMwYmU0
N2ZiZjAxOWY3NzAyZmQwMzJkNTc4ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDEw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYXJhbGxlbEltYWdlRGVjb2Rlcl9oCisjZGVm
aW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyX2gKKworI2luY2x1ZGUgIkltYWdlRGVjb2RlV29ya2Vy
LmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJbWFnZUZyYW1lRGF0YTsKK2NsYXNzIFBhcmFsbGVsRnJh
bWVEYXRhOworCitjbGFzcyBQYXJhbGxlbEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQYXJhbGxlbEltYWdlRGVjb2Rlcj4geworcHVibGljOgorICAgIFBhcmFsbGVs
SW1hZ2VEZWNvZGVyKFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIqLCBJbWFnZURlY29kZXIq
KTsKKyAgICB+UGFyYWxsZWxJbWFnZURlY29kZXIoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgp
OworCisgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciosIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKworICAgIHZvaWQgZGVjb2RlKCk7CisKKyAgICBpbmxpbmUgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZUV4dGVuc2lvbjsgfQorICAgIGlubGlu
ZSBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIGluaXRpYWxpemUoSW1hZ2VEZWNvZGVyKik7CisKKyAgICBpbmxpbmUgYm9vbCB2YWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VEZWNvZGVyOyB9CisKKyAgICBzdHJ1Y3QgRW5jb2Rl
ZERhdGFTZWdtZW50IHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW5jb2RlZERhdGFT
ZWdtZW50KTsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgor
ICAgICAgICBFbmNvZGVkRGF0YVNlZ21lbnQoKSB7IH0KKyAgICAgICAgVmVjdG9yPGNoYXI+IG1f
c2VnbWVudDsKKyAgICAgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkOworICAgIH07CisKKyAg
ICBQYXNzT3duUHRyPEVuY29kZWREYXRhU2VnbWVudD4gZXh0cmFjdFNlZ21lbnRGb3JUYXNrKCk7
CisKKyAgICAvLyBPbmx5IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgdGFzayB0aHJlYWQu
CisgICAgdm9pZCBkZWNvZGVUYXNrKFBhc3NPd25QdHI8RW5jb2RlZERhdGFTZWdtZW50Pik7CisK
KyAgICB2b2lkIGRpZERlY29kZVRhc2soUGFyYWxsZWxGcmFtZURhdGEqKTsKKyAgICB2b2lkIGRp
ZERlY29kZVBhcnRpYWwoSW1hZ2VGcmFtZURhdGEmLCBQYXJhbGxlbEZyYW1lRGF0YSopOworICAg
IHZvaWQgYXBwZW5kRGVjb2RlZERhdGFUb0ltYWdlRnJhbWUoUGFyYWxsZWxGcmFtZURhdGEqKTsK
KyAgICB2b2lkIHN5bmNJbWFnZUZyYW1lKFBhcmFsbGVsRnJhbWVEYXRhKik7CisgICAgdm9pZCBk
aWREZWNvZGVDb21wbGV0ZShJbWFnZUZyYW1lRGF0YSYpOworICAgIGZyaWVuZCB2b2lkIGRpZERl
Y29kZVRhc2tDYWxsYmFjayhQYXJhbGxlbEZyYW1lRGF0YSopOworCisgICAgUGFyYWxsZWxJbWFn
ZURlY29kZXJPYnNlcnZlciogbV9vYnNlcnZlcjsKKworICAgIEludFNpemUgbV9zaXplOworICAg
IFN0cmluZyBtX2ZpbGVuYW1lRXh0ZW5zaW9uOworCisgICAgLy8gRm9yIGlucHV0IGRhdGEKKyAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIGludCBtX2J5dGVzT2ZEYXRhQ29uc3VtZWQ7CisKKyAgICAvLyBGb3Igb3V0cHV0
IGRhdGEKKyAgICBJbWFnZUZyYW1lIG1faW1hZ2VGcmFtZTsKKworICAgIC8vIFRoZSB0YXNrIHRo
cmVhZCBjYW4gYWNjZXNzIG9ubHkgbV9kYXRhRm9yVGFzayBhbmQgbV9pbWFnZURlY29kZXIuCisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhRm9yVGFzazsKKworICAgIEltYWdlRGVjb2Rl
ciogbV9pbWFnZURlY29kZXI7CisKKyAgICBSZWZQdHI8SW1hZ2VEZWNvZGVXb3JrZXI+IG1fZGVj
b2RlV29ya2VyOworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxsZWxJbWFnZURl
Y29kZXJPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGFyYWxs
ZWxJbWFnZURlY29kZXJPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhN2UxOTcwNWUxZTI5YzVmMzlh
ZGJkY2JlOTc3NzhhMTgxZDhlNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXJhbGxlbEltYWdlRGVjb2Rlck9ic2VydmVyLmgKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNl
cnZlcl9oCisjZGVmaW5lIFBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXJfaAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhOworCisvLyBJbnRlcmZhY2UgZm9y
IG5vdGlmaWNhdGlvbiBhYm91dCBkZWNvZGluZyBjb21wbGV0aW9uIG9mIGFuIFBhcmFsbGVsSW1h
Z2VEZWNvZGVyLgorY2xhc3MgUGFyYWxsZWxJbWFnZURlY29kZXJPYnNlcnZlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB2b2lkIGRpZERlY29kZShjb25zdCBJbWFnZUZyYW1lRGF0YSYpID0gMDsK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBhcmFsbGVsSW1hZ2VEZWNvZGVyT2JzZXJ2ZXIo
KSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDliYWI2NjU1N2UxZjcxNDI4NzEwZDM1ZTg1OGY1OTNiZThkZGRiYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1h
cEltYWdlLmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgorCisjaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlPiBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKEJp
dG1hcEltYWdlKiBiaXRtYXBJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJldGFp
bmVkTW9kZUJpdG1hcEltYWdlKGJpdG1hcEltYWdlKSk7Cit9CisKK1JldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2Up
CisgICAgOiBtX2JpdG1hcEltYWdlKGJpdG1hcEltYWdlKQorICAgICwgbV9yZXRhaW5lZE1vZGVD
b3VudCgwKQoreworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0Cit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRN
b2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0bWFwSW1hZ2UtPmhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCk7Cit9CisKK0ludFNpemUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2U6OnNpemUo
KSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMp
OworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zaXplKCk7Cit9CisKK2Jvb2wgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAg
IFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBt
X2JpdG1hcEltYWdlLT5nZXRIb3RTcG90KHBvaW50KTsKK30KKworYm9vbCBSZXRhaW5lZE1vZGVC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgUmV0
YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgcmV0dXJuIG1fYml0
bWFwSW1hZ2UtPmRhdGFDaGFuZ2VkKGFsbERhdGFSZWNlaXZlZCk7Cit9CisKK1N0cmluZyBSZXRh
aW5lZE1vZGVCaXRtYXBJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2Jp
dG1hcEltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQoreworICAgIFJl
dGFpbmVkTW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIG1fYml0bWFwSW1h
Z2UtPmRlc3Ryb3lEZWNvZGVkRGF0YShkZXN0cm95QWxsKTsKK30KKwordW5zaWduZWQgUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2U6OmRlY29kZWRTaXplKCkgY29uc3QKK3sKKyAgICBSZXRhaW5lZE1v
ZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6c3Rh
cnRBbmltYXRpb24oYm9vbCBjYXRjaFVwSWZOZWNlc3NhcnkpCit7CisgICAgUmV0YWluZWRNb2Rl
U2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RhcnRB
bmltYXRpb24oY2F0Y2hVcElmTmVjZXNzYXJ5KTsKK30KKwordm9pZCBSZXRhaW5lZE1vZGVCaXRt
YXBJbWFnZTo6c3RvcEFuaW1hdGlvbigpCit7CisgICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWlu
ZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRtYXBJbWFnZS0+c3RvcEFuaW1hdGlvbigpOwor
fQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCit7Cisg
ICAgUmV0YWluZWRNb2RlU2F2ZXIgcmV0YWluZWRNb2RlU2F2ZXIodGhpcyk7CisgICAgbV9iaXRt
YXBJbWFnZS0+cmVzZXRBbmltYXRpb24oKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAgICBSZXRh
aW5lZE1vZGVTYXZlciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRt
YXBJbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKK30KKworYm9vbCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxwaGEoKQoreworICAgIFJldGFpbmVk
TW9kZVNhdmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcElt
YWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworfQorCitib29sIFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlOjpjdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZl
ciByZXRhaW5lZE1vZGVTYXZlcih0aGlzKTsKKyAgICByZXR1cm4gbV9iaXRtYXBJbWFnZS0+Y3Vy
cmVudEZyYW1lSXNDb21wbGV0ZSgpOworfQorCit2b2lkIFJldGFpbmVkTW9kZUJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKK3sKKyAgICBSZXRhaW5lZE1vZGVTYXZlciByZXRhaW5lZE1v
ZGVTYXZlcih0aGlzKTsKKyAgICBtX2JpdG1hcEltYWdlLT5kcmF3KGNvbnRleHQsIGRzdFJlY3Qs
IHNyY1JlY3QsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworfQorCitib29sIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3IoKQoreworICAgIFJldGFpbmVkTW9kZVNh
dmVyIHJldGFpbmVkTW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5t
YXlGaWxsV2l0aFNvbGlkQ29sb3IoKTsKK30KKworQ29sb3IgUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2U6OnNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIFJldGFpbmVkTW9kZVNhdmVyIHJldGFpbmVk
TW9kZVNhdmVyKHRoaXMpOworICAgIHJldHVybiBtX2JpdG1hcEltYWdlLT5zb2xpZENvbG9yKCk7
Cit9CisKK1JldGFpbmVkTW9kZVNhdmVyOjpSZXRhaW5lZE1vZGVTYXZlcihjb25zdCBSZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZSogaW1hZ2UsIGJvb2wgcmV0YWluZWQpCisgICAgOiBtX2ltYWdlKGlt
YWdlKQorICAgICwgbV9yZXRhaW5lZChyZXRhaW5lZCkKK3sKKyAgICBpZiAobV9yZXRhaW5lZCkK
KyAgICAgICAgbV9pbWFnZS0+YmVnaW5SZXRhaW5lZE1vZGUoKTsKK30KKworUmV0YWluZWRNb2Rl
U2F2ZXI6On5SZXRhaW5lZE1vZGVTYXZlcigpCit7CisgICAgaWYgKG1fcmV0YWluZWQpCisgICAg
ICAgIG1faW1hZ2UtPmVuZFJldGFpbmVkTW9kZSgpOworfQorCitSZXRhaW5lZE1vZGVCaXRtYXBJ
bWFnZSogdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShJbWFnZSogaW1hZ2UpCit7CisgICAgQVNT
RVJUKGltYWdlLT5pc0JpdG1hcEltYWdlKCkpOworCisgICAgQml0bWFwSW1hZ2UqIGJpdG1hcElt
YWdlID0gc3RhdGljX2Nhc3Q8Qml0bWFwSW1hZ2UqPihpbWFnZSk7CisgICAgaWYgKCFiaXRtYXBJ
bWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5nZXQoKSkKKyAgICAgICAgYml0bWFwSW1hZ2UtPm1f
cmV0YWluZWRNb2RlSW1hZ2UgPSBSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZTo6Y3JlYXRlKGJpdG1h
cEltYWdlKTsKKworICAgIHJldHVybiBiaXRtYXBJbWFnZS0+bV9yZXRhaW5lZE1vZGVJbWFnZS5n
ZXQoKTsKK30KKworSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKElt
YWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoaW1hZ2UpOworICAgIHJl
dHVybiBpbWFnZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNlN2E4
YzM4NTU3MzBjZTljOTlhZTE5ZjEzODA5ZGFmY2Y4NTdlNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgK
QEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJldGFpbmVkTW9kZUJp
dG1hcEltYWdlX2gKKyNkZWZpbmUgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VfaAorCisjaW5jbHVk
ZSAiSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBJbWFnZTsK
K2NsYXNzIFJldGFpbmVkTW9kZVNhdmVyOworCitjbGFzcyBSZXRhaW5lZE1vZGVCaXRtYXBJbWFn
ZSA6IHB1YmxpYyBJbWFnZSB7CisgICAgZnJpZW5kIGNsYXNzIFJldGFpbmVkTW9kZVNhdmVyOwor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJldGFpbmVkTW9kZUJpdG1hcEltYWdlPiBj
cmVhdGUoQml0bWFwSW1hZ2UqKTsKKworICAgIHZpcnR1YWwgflJldGFpbmVkTW9kZUJpdG1hcElt
YWdlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKKworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGdldEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBkYXRh
Q2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSk7CisgICAgdmlydHVhbCB1bnNpZ25lZCBkZWNvZGVk
U2l6ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0QW5pbWF0aW9uKGJvb2wgY2F0
Y2hVcElmTmVjZXNzYXJ5ID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKKworICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lSGFzQWxwaGEoKTsKKworICAgIGJvb2wgY3VycmVudEZyYW1lSXNDb21w
bGV0ZSgpOworCisgICAgaW5saW5lIGJvb2wgcmV0YWluZWRNb2RlUmVuZGVyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXRhaW5lZE1vZGVDb3VudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9y
KCk7CisgICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoQml0bWFwSW1hZ2UqKTsKKworICAg
IGlubGluZSB2b2lkIGJlZ2luUmV0YWluZWRNb2RlKCkgY29uc3QgeyBtX3JldGFpbmVkTW9kZUNv
dW50Kys7IH0KKyAgICBpbmxpbmUgdm9pZCBlbmRSZXRhaW5lZE1vZGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgbV9yZXRhaW5lZE1vZGVDb3VudC0tOworICAgICAgICBBU1NFUlQobV9yZXRhaW5l
ZE1vZGVDb3VudCA+PSAwKTsKKyAgICB9CisKKyAgICBCaXRtYXBJbWFnZSogbV9iaXRtYXBJbWFn
ZTsKKyAgICBtdXRhYmxlIGludCBtX3JldGFpbmVkTW9kZUNvdW50OworfTsKKworY2xhc3MgUmV0
YWluZWRNb2RlU2F2ZXIgeworcHVibGljOgorICAgIFJldGFpbmVkTW9kZVNhdmVyKGNvbnN0IFJl
dGFpbmVkTW9kZUJpdG1hcEltYWdlKiwgYm9vbCByZXRhaW5lZCA9IHRydWUpOworICAgIH5SZXRh
aW5lZE1vZGVTYXZlcigpOworCitwcml2YXRlOgorICAgIGNvbnN0IFJldGFpbmVkTW9kZUJpdG1h
cEltYWdlKiBtX2ltYWdlOworICAgIGJvb2wgbV9yZXRhaW5lZDsKK307CisKKworUmV0YWluZWRN
b2RlQml0bWFwSW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKK0ltYWdl
KiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTNhNTY1ZDE4NjU0MjE3MWY0MGEyNjM1MmFhZTgwNjk4
YjgwOTRhMC4uNmY5NTc0MDc4OGZjM2U2NzYzY2YyMWZiYjRmNmY2ZDdmNDAwMzk2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCkBAIC03NjYsMTMgKzc2NiwxMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAg
ICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwotICAgICAgICBpZiAoIW5ld0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBBU1NFUlQobmV3SW1hZ2UpOwogCiAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgaW1h
Z2UgY2hhbmdlZDsgd2UgaGF2ZSB0byBkbyB0aGlzIGJlY2F1c2UgdGhlIGNhbGwgdG8KICAgICAg
ICAgLy8gQ0dJbWFnZUNyZWF0ZUNvcHlXaXRoQ29sb3JTcGFjZSgpIGJlbG93IGNhbiBjcmVhdGUg
YSBuZXcgaW1hZ2UgZXZlcnkgdGltZS4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoIW1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlIHx8IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpICE9IG5ld0ltYWdlKTsK
ICAgICAgICAgCiAgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7
CiAgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKaW5kZXggZGM2YTRkNGJjYjcyYzZhZTczNGZlNzM5YThjNGNlN2Q1NjQxNWY0Ny4u
ZDA2YjFmNzdiZmRhNTkzNGJlZDc2Y2UxOTI5NzBhMmM0YzI4MTIxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKQEAgLTU4LDYgKzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2
ZUltYWdlQ2Fpcm8qIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAs
IG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9o
YXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAg
ICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAg
IGludCB3aWR0aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRleCAyNTQyY2Y4ZmE5MWQwYjhhNzE0Mzg1
YTRlMzAyMzk2NzgzZDk2MWRkLi5iNzQyNWE5ZTgxNmZiM2JlZWRiMzJlMDA3ZDdkMmI4ZDMxNTEy
ZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVu
c2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFn
ZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFn
ZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFn
ZUZyYW1lRGF0YSBpbWFnZUltYWdlRnJhbWVEYXRhID0gZGVjb2Rlci5yZXF1ZXN0RnJhbWVBdElu
ZGV4KDApOwogICAgICAgICBpZiAoIWltYWdlSW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VDYWly
bz4gbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihpbWFnZUltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcAppbmRleCA3ODBiYTQ0ZDg0MWE2MDA5OTM5ODhkYTIzMTQ2MzA4
MjlkNDMzOTNkLi4zODdmMWVmNTJlZGU5MTM4YTQwYWRkZGM5ZjZkNTc4NzU2Yzg1MmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgIGRlY29kZXIuc2V0RGF0
YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1h
Z2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgSW1h
Z2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLnJlcXVlc3RGcmFtZUF0SW5kZXgo
MCk7CiAgICAgICAgIGRlY29kZWRJbWFnZS5hZG9wdENGKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUp
OwogICAgICAgICBjZ0ltYWdlID0gZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAppbmRleCA3
M2NlZTIyMDVkNWYyZDk3MWI5ZGFhYWI2MzQzNWVjZjUxOTAwYWYwLi40MDYzZGYwNTQ4YTE3YTA2
MTAwYzYwN2ZkMmM3ODI5NGQ4MWJlZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtODEsNiArODEsNyBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAg
ICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9pc0NhY2hpbmdGcmFtZShmYWxzZSkK
IHsKICAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwogICAgIENH
RmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXgg
YjQ0NTQ5OTNiNTI4N2M1NGZmNzRiMjliMGRlMDMwNjI3NmFmYjQyNC4uZmE5YmMzZWQyMDMwMjVj
YTgwMGM5YjNhYTcwYmQ1NWIzZmYyNmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNl
cnZlci5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0zMDksMTEgKzMxMCwxMiBAQCBzaXplX3QgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291
cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVl
c3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6
OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBib29sKQogewogICAgIEFTU0VSVCht
X29ic2VydmVyKTsKICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGNyZWF0ZUZy
YW1lQXRJbmRleChpbmRleCk7CiAgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZyYW1lQXRJbmRl
eChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworICAgIHJldHVybiBpbWFnZUZyYW1lRGF0YTsKIH0K
IAogSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dmcvSW1hZ2VPcGVuVkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnZnL0ltYWdlT3BlblZHLmNwcAppbmRleCBjZDg3OTRlNTM5Y2ZkNTBlZTg4YTc3ZTA3YzQ1Zjgy
YWI5Y2Q3MzUzLi45MDAwZmMzZGZiNWIzMDljZGFmYWE5OTcxMjViN2I5NjM1ZWYzZmI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVu
VkcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFn
ZU9wZW5WRy5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFRp
bGVkSW1hZ2VPcGVuVkcqIHRpbGVkSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAg
ICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1
ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKKyAgICAsIG1faXNDYWNoaW5nRnJhbWUo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fc2l6ZS53aWR0aCgpID4gMCk7CiAgICAgQVNTRVJUKG1f
c2l6ZS5oZWlnaHQoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZVF0LmNwcAppbmRleCBlNjc1Y2Q0MmJmMzEwOTRlYWFiZWQxODEwODQwZTc4ZjBh
MTY0MWIzLi45N2I1NjUyZjNkNDc5OTdmZGU0ZTkxMTE4M2U4MDRhOWU2YTBmNWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMjE0
LDYgKzIxNCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShRSW1hZ2UqIGltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZVNpemUodHJ1ZSkKICAgICAsIG1fc2l6
ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQorICAgICwgbV9p
c0NhY2hpbmdGcmFtZShmYWxzZSkKIHsKICAgICBpbnQgd2lkdGggPSBpbWFnZS0+d2lkdGgoKTsK
ICAgICBpbnQgaGVpZ2h0ID0gaW1hZ2UtPmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNr
aWEuY3BwCmluZGV4IGY1NmQ3MjQ1YWQxMGVjM2FlODViZWQ0MjcwOWU2ZjZiNDcyYjJjNTAuLjFm
MDQ1OWM1NGFjNTA1ZmM3MmJkM2NiMDg2ZWFlZTI2ODhhNWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dDNEU2tpYS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdl
LT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1l
RGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBJbWFnZUZyYW1l
RGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIucmVxdWVzdEZyYW1lQXRJbmRleCgwKTsKICAg
ICAgICAgaWYgKCFpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGhhc0FscGhhID0gaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDI4MDI5MzNh
OTk2YzUzYzM4NzEyZDRkZDcxMTg3YjNhNjU1ZDkwZjIuLjQ1Y2Y2ZGJjODg5ODQ2ZmRiM2FjMDNk
MzIwNzFkMDcyZDlmNmI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcApAQCAtMzE1LDggKzMxNSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiB2YWx1ZSkKICovCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQog
ewotICAgIGlmIChpbWFnZSA9PSBtX2ltYWdlKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KGltYWdlICE9IG1faW1hZ2UpOwogCiAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2lt
YWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9J
bWFnZVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3gu
Y3BwCmluZGV4IGI3YzI0OTZjNzNiNTI2NWYxZDg1MzRlMzM3ZWU4YzIwZmUzMDI5ODkuLmI0YjU3
YmU5YmEzNDMwNWQzNDlmYmY0YzRlNWI0NzY3NWZiODMxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCkBAIC05NSw2ICs5NSw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCB3eEJpdG1hcCYgYml0bWFwKQogICAgICwgbV9k
ZWNvZGVkU2l6ZSgwKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogICAgICwgbV9mcmFt
ZUNvdW50KDEpCisgICAgLCBtX2lzQ2FjaGluZ0ZyYW1lKGZhbHNlKQogewogICAgIG1fZGVjb2Rl
ZFNpemUgPSBiaXRtYXAuR2V0V2lkdGgoKSAqIGJpdG1hcC5HZXRIZWlnaHQoKSAqIDQ7CiAgICAg
bV9zaXplID0gSW50U2l6ZShiaXRtYXAuR2V0V2lkdGgoKSwgYml0bWFwLkdldEhlaWdodCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuY3BwCmluZGV4IDcyYjVkZGMyZGUzMWQwMDQwNzI3ZDQ0ZTk1MTYyYWRmNmJhYzc2
YzcuLjkwNGY4NjY4NjMzMmRhOGMzMjZkZDBmNmViNTdiYjQ1NTY3NzVkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMTQwLDYgKzE0MCw3IEBAIEltYWdlRGVjb2RlciogSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBJbWFnZVNvdXJjZTo6QWxwaGFPCiAKIEltYWdl
RnJhbWU6OkltYWdlRnJhbWUoKQogICAgIDogbV9oYXNBbHBoYShmYWxzZSkKKyAgICAsIG1fbGFz
dERlY29kZWRSb3coMCkKICAgICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCiAgICAgLCBtX2R1cmF0
aW9uKDApCiAgICAgLCBtX2Rpc3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCkBAIC0x
NjUsNiArMTY2LDcgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiB7CiAgICAg
bV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICBtX2J5dGVzID0gMDsKKyAgICBtX2xhc3REZWNv
ZGVkUm93ID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CiAgICAgLy8gTk9URTogRG8g
bm90IHJlc2V0IG90aGVyIG1lbWJlcnMgaGVyZTsgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKCkgY2Fs
bHMgdGhpcwogICAgIC8vIHRvIGZyZWUgdGhlIGJpdG1hcCBkYXRhLCBidXQgb3RoZXIgZnVuY3Rp
b25zIGxpa2UgaW5pdEZyYW1lQnVmZmVyKCkgYW5kCkBAIC0xODcsNiArMTg5LDcgQEAgYm9vbCBJ
bWFnZUZyYW1lOjpjb3B5Qml0bWFwRGF0YShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAgICBt
X2J5dGVzID0gbV9iYWNraW5nU3RvcmUuZGF0YSgpOwogICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6
ZTsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhhKTsKKyAgICBtX2xhc3REZWNvZGVk
Um93ID0gb3RoZXIubV9sYXN0RGVjb2RlZFJvdzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTk5LDYgKzIwMiw3IEBAIGJvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6ZShpbnQgbmV3V2lkdGgsIGlu
dCBuZXdIZWlnaHQpCiAgICAgbV9iYWNraW5nU3RvcmUucmVzaXplKGJhY2tpbmdTdG9yZVNpemUp
OwogICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXplID0gSW50
U2l6ZShuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBtX2xhc3REZWNvZGVkUm93ID0gMDsKIAog
ICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4
IDkxMTg3OGUxZDk2MjIyNjQ3ZTdmMzQ3ZTc2NjJkMmZiZWYzZjAyOGIuLjI3MDNlNDg4YjhlNjhh
NmU5NmNkY2I1YWIyZTk1NmU3YTU1YWRlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0xMTgsNiArMTE4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2
ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworICAgICAg
ICBpbnQgbGFzdERlY29kZWRSb3coKSBjb25zdCB7IHJldHVybiBtX2xhc3REZWNvZGVkUm93OyB9
CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KQEAgLTEyNSw2ICsxMjYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBh
bHBoYSk7CisgICAgICAgIGlubGluZSB2b2lkIHNldExhc3REZWNvZGVkUm93KGludCBsYXN0RGVj
b2RlZFJvdykgeyBtX2xhc3REZWNvZGVkUm93ID0gbGFzdERlY29kZWRSb3c7IH0KICAgICAgICAg
dm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJik7CiAgICAgICAgIHZvaWQg
c2V0T3JpZ2luYWxGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX29yaWdpbmFsRnJhbWVS
ZWN0ID0gcjsgfQogICAgICAgICB2b2lkIHNldFN0YXR1cyhGcmFtZVN0YXR1cyBzdGF0dXMpOwpA
QCAtMTgxLDYgKzE4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgbV9jb2xvclByb2ZpbGUgYW55bW9yZT8KICAgICAgICAgQ29sb3JQcm9maWxl
IG1fY29sb3JQcm9maWxlOwogI2VuZGlmCisgICAgICAgIGludCBtX2xhc3REZWNvZGVkUm93Owog
ICAgICAgICBJbnRSZWN0IG1fb3JpZ2luYWxGcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMg
anVzdCBiZSB0aGUgZW50aXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGZyYW1lcyB3aG9zZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIHJlY3Qgd2FzIHNtYWxsZXIgdGhhbiB0aGUK
QEAgLTIyOCw2ICsyMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBtX2lz
QWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogICAgICAgICB9CiAKKyAgICAgICAg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisKICAg
ICAgICAgLy8gTGF6aWx5LWRlY29kZXMgZW5vdWdoIG9mIHRoZSBpbWFnZSB0byBnZXQgdGhlIHNp
emUgKGlmIHBvc3NpYmxlKS4KICAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB0aGF0IGhhcyB0
byBiZSBkb25lIGJ5IGVhY2ggc3ViY2xhc3M7IGZhY3RvciB0aGUKICAgICAgICAgLy8gZGVjb2Rl
IGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KQEAgLTI3Niw2ICsyODEsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlci4KICAgICAg
ICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CiAK
KyAgICAgICAgLy8gUmV0dXJucyBhbiBJbWFnZURlY29kZXItb3duZWQgcG9pbnRlciB3aXRob3V0
IGRlY29kaW5nIG1vcmUuCisgICAgICAgIEltYWdlRnJhbWUqIGZpcnN0SW1hZ2VGcmFtZVdpdGhv
dXREZWNvZGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNh
Y2hlLmlzRW1wdHkoKSA/IDAgOiAmbV9mcmFtZUJ1ZmZlckNhY2hlWzBdOworICAgICAgICB9CisK
ICAgICAgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsg
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBpZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibGFja2JlcnJ5L0pQRUdJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDZhNjVlNjE3ZDE5ZTY3YmZhMjE4MDUzODdjMTE5NWRhNDgyMWRiNmQuLmJkY2Fl
ZjA1ZWE0MDExNWQwNmNmNzM1ZjA5MTlhYWM0YjIxOWVlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JsYWNrYmVycnkvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYmxhY2ti
ZXJyeS9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTU3LDYgKzE1Nyw3IEBAIGludCBJbWFnZVJl
YWRlcjo6ZGVjb2RlKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgSW1hZ2VGcmFtZSogYUZy
YW1lKQogICAgICAgICAgICAgYUZyYW1lLT5zZXRSR0JBKGksIGosIGN1clB0clswXSwgY3VyUHRy
WzFdLCBjdXJQdHJbMl0sIDI1NSk7CiAgICAgICAgICAgICBjdXJQdHIgKz0gMzsKICAgICAgICAg
fQorICAgICAgICBhRnJhbWUtPnNldExhc3REZWNvZGVkUm93KGopOwogICAgIH0KICAgICByZXR1
cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjBhMjQ4YzdkM2JjYjEx
Y2FkN2M2NzY5NWViODI3NTc1Mjc4MjQ5My4uZjc0ZGRlM2EwZGZmYWFiNzliMDVhYjQzOGJkMWZm
OGZlYTJjMjRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTY0LDggKzY0LDE1
IEBAIHZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAKIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFi
bGUoKQogewotICAgIGlmICghSW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUoKSkKKyAgICBp
ZiAoIUltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgLy8gT25seSBC
TVBJbWFnZURlY29kZXIgbXVzdCBtYWtlIG1fZnJhbWVCdWZmZXJDYWNoZVswXSBpbiBpc1NpemVB
dmFpbGFibGUoKSwKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBJbWFn
ZUZyYW1lOjptX2xhc3REZWNvZGVkUm93IGNhbiBiZSAiaGVpZ2h0IC0gMSIuCisgICAgICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2ZyYW1lQnVm
ZmVyQ2FjaGUucmVzaXplKDEpOworICAgICAgICAgICAgbV9mcmFtZUJ1ZmZlckNhY2hlLmZpcnN0
KCkuc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEpOworICAgICAgICB9CiAg
ICAgICAgIGRlY29kZSh0cnVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpp
c1NpemVBdmFpbGFibGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDVjMDA1
NTM0ZWNkOTIxMzRhMTNiMzI5NTg5Mjc3OTBmMDdhZDBmODEuLjRmN2UzMTc5ZTY2NjMzOGEzYTEx
NGIxYjIyYTFlMzQ5NDgzOTQ1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmNwcApAQCAtNjQs
OCArNjQsMTEgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6ZGVjb2RlQk1QKGJvb2wgb25seVNpemUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIHByb2Nlc3NJbmZvSGVhZGVyKCkgc2V0
IHRoZSBzaXplLCBzbyBpZiB0aGF0J3MgYWxsIHdlIG5lZWRlZCwgd2UncmUgZG9uZS4KLSAgICBp
ZiAob25seVNpemUpCisgICAgaWYgKG9ubHlTaXplKSB7CisgICAgICAgIGlmICghbV9pc1RvcERv
d24pCisgICAgICAgICAgICBtX2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9wYXJlbnQtPnNp
emUoKS5oZWlnaHQoKSAtIDEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICAv
LyBSZWFkIGFuZCBwcm9jZXNzIHRoZSBiaXRtYXNrcywgaWYgbmVlZGVkLgogICAgIGlmIChtX25l
ZWRUb1Byb2Nlc3NCaXRtYXNrcyAmJiAhcHJvY2Vzc0JpdG1hc2tzKCkpCkBAIC02MjQsNiArNjI3
LDcgQEAgYm9vbCBCTVBJbWFnZVJlYWRlcjo6cHJvY2Vzc1JMRURhdGEoKQogCiAgICAgICAgICAg
ICAgICAgbV9kZWNvZGVkT2Zmc2V0ICs9IDI7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2J1ZmZlci0+c2V0TGFzdERlY29kZWRSb3cobV9jb29yZC55KCkpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtNzE3LDYgKzcyMSw3IEBAIEJNUEltYWdlUmVhZGVyOjpQcm9jZXNzaW5nUmVzdWx0
IEJNUEltYWdlUmVhZGVyOjpwcm9jZXNzTm9uUkxFRGF0YShib29sIGluUkxFLCBpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRDb21wb25lbnQocGl4ZWwsIDIpLCBhbHBoYSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9idWZmZXItPnNldExhc3REZWNvZGVkUm93KG1f
Y29vcmQueSgpKTsKIAogICAgICAgICAvLyBTdWNjZXNzLCBrZWVwIGdvaW5nLgogICAgICAgICBt
X2RlY29kZWRPZmZzZXQgKz0gcGFkZGVkTnVtQnl0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDVmNjE5M2I4ZjllMWJhOTM3YjZlM2ZjNzMxNzQ5MjQzNGRhYWUyZGEuLjcxOThh
MTFjMWYxNTY4MDBjN2FiYjFmZmVhNDAxYjJjNzU5MDg1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCkBAIC0yNDksMTAgKzI0OSwxNCBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2
ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgdW5zaWduZWQgY2hhciogcm93QnVmZgog
ICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKHgsIHlCZWdpbiwgMCwgMCwgMCwgMCk7CiAg
ICAgICAgIH0KICAgICB9CisgICAgYnVmZmVyLnNldExhc3REZWNvZGVkUm93KHlCZWdpbik7CiAK
ICAgICAvLyBUZWxsIHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cgZGF0YSBpZiBuZWVkIGJlLgot
ICAgIGlmIChyZXBlYXRDb3VudCA+IDEpCisgICAgaWYgKHJlcGVhdENvdW50ID4gMSkgewogICAg
ICAgICBidWZmZXIuY29weVJvd05UaW1lcyh4QmVnaW4sIHhFbmQsIHlCZWdpbiwgeUVuZCk7Cisg
ICAgICAgIEFTU0VSVCgoeUVuZCAtIDEpID49IDApOworICAgICAgICBidWZmZXIuc2V0TGFzdERl
Y29kZWRSb3coeUVuZCAtIDEpOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzkw
LDYgKzM5NCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5zaWdu
ZWQgZnJhbWVJbmRleCkKICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IHByZXZSZWN0LnkoKTsg
eSA8IHByZXZSZWN0Lm1heFkoKTsgKyt5KSB7CiAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4
ID0gcHJldlJlY3QueCgpOyB4IDwgcHJldlJlY3QubWF4WCgpOyArK3gpCiAgICAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyLT5zZXRSR0JBKHgsIHksIDAsIDAsIDAsIDApOworICAgICAgICAgICAg
ICAgICAgYnVmZmVyLT5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICBpZiAoKHByZXZSZWN0LndpZHRoKCkgPiAwKSAmJiAocHJldlJlY3QuaGVpZ2h0
KCkgPiAwKSkKICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+c2V0SGFzQWxwaGEodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA5MWYxMjM2YjM1OWJjMTU1YWYzN2M3
ZmUyY2UzNmVhNzNjNTA5NDk2Li40ODYxY2I2NjcyMzk3OGNiZGIzNzc4ZTBiMzc4MTk4ZWViOWIw
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU3Nyw2ICs1NzcsNyBA
QCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgaWYgKHR1cmJv
U3dpenpsZWQoaW5mby0+b3V0X2NvbG9yX3NwYWNlKSkgewogICAgICAgICBBU1NFUlQoIW1fc2Nh
bGVkKTsKICAgICAgICAgd2hpbGUgKGluZm8tPm91dHB1dF9zY2FubGluZSA8IGluZm8tPm91dHB1
dF9oZWlnaHQpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhpbmZvLT5v
dXRwdXRfc2NhbmxpbmUpOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciogcm93ID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyLmdldEFkZHIoMCwgaW5mby0+b3V0cHV0
X3NjYW5saW5lKSk7CiAgICAgICAgICAgICBpZiAoanBlZ19yZWFkX3NjYW5saW5lcyhpbmZvLCAm
cm93LCAxKSAhPSAxKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyOCw2ICs2
MjksNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Cisg
ICAgICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhkZXN0WSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDEzOGQ1YzUxMjkxZWEy
NmY2OTY0M2Y2YWE0NDg4NGJiNWM2NDgwZWYuLjgxMGNhYTcyMDgyMTlmZmY2Y2Y2Mjk3NGU4ZWY3
ZWYxYjM0NTFiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01MjAsNiArNTIw
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OnJvd0F2YWlsYWJsZSh1bnNpZ25lZCBjaGFyKiBy
b3dCdWZmZXIsIHVuc2lnbmVkIHJvd0luZGV4LAogCiAgICAgaWYgKG5vblRyaXZpYWxBbHBoYSAm
JiAhYnVmZmVyLmhhc0FscGhhKCkpCiAgICAgICAgIGJ1ZmZlci5zZXRIYXNBbHBoYShub25Ucml2
aWFsQWxwaGEpOworICAgIGJ1ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyh5KTsKIH0KIAogdm9pZCBQ
TkdJbWFnZURlY29kZXI6OnBuZ0NvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEu
Y3BwCmluZGV4IDVjYzEzMmM0ZDQ4NDAwYjgxNTJlZTVmNGZlZjIyNDJjNDI5ZGI2YjYuLjEzMzE4
YTM4NDZmZjVhZWJkOTMwMmFkMzJlMTUzMjNkZDg3MzhjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFnZURl
Y29kZXJTa2lhLmNwcApAQCAtNTcsNiArNTcsNyBAQCBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpv
cGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFy
UGl4ZWxEYXRhKCkKIHsKICAgICBtX2JpdG1hcC5iaXRtYXAoKS5yZXNldCgpOworICAgIG1fbGFz
dERlY29kZWRSb3cgPSAwOwogICAgIG1fc3RhdHVzID0gRnJhbWVFbXB0eTsKICAgICAvLyBOT1RF
OiBEbyBub3QgcmVzZXQgb3RoZXIgbWVtYmVycyBoZXJlOyBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
KQogICAgIC8vIGNhbGxzIHRoaXMgdG8gZnJlZSB0aGUgYml0bWFwIGRhdGEsIGJ1dCBvdGhlciBm
dW5jdGlvbnMgbGlrZQpAQCAtNzYsNiArNzcsNyBAQCBib29sIEltYWdlRnJhbWU6OmNvcHlCaXRt
YXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogCiAgICAgbV9iaXRtYXAuYml0bWFwKCku
cmVzZXQoKTsKICAgICBjb25zdCBOYXRpdmVJbWFnZVNraWEmIG90aGVyQml0bWFwID0gb3RoZXIu
bV9iaXRtYXA7CisgICAgbV9sYXN0RGVjb2RlZFJvdyA9IG90aGVyLm1fbGFzdERlY29kZWRSb3c7
CiAgICAgcmV0dXJuIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvcHlUbygmbV9iaXRtYXAuYml0bWFw
KCksIG90aGVyQml0bWFwLmJpdG1hcCgpLmNvbmZpZygpKTsKIH0KIApAQCAtODQsNiArODYsNyBA
QCBib29sIEltYWdlRnJhbWU6OnNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQog
ICAgIC8vIHNldFNpemUoKSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSwgaXQgbGVha3MgbWVt
b3J5IG90aGVyd2lzZS4KICAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdodCgpKTsKIAorICAg
IG1fbGFzdERlY29kZWRSb3cgPSAwOwogICAgIG1fYml0bWFwLmJpdG1hcCgpLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQpOwogICAgIGlm
ICghbV9iaXRtYXAuYml0bWFwKCkuYWxsb2NQaXhlbHMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDgyZTMzZGRiMmEzNjBlMzg4
OGQ3OWIwM2E5YzIxY2NkYjhjMDNjMi4uYTlmOThhZDgwZjZmMTk4MDU4ZDJhZmRlYmI2YTQwOWUy
M2FlNzlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsMTkgKzEz
MiwyNiBAQCBib29sIFdFQlBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplKQogICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAoV2ViUElV
cGRhdGUobV9kZWNvZGVyLCBkYXRhQnl0ZXMsIGRhdGFTaXplKSkgewotICAgIGNhc2UgVlA4X1NU
QVRVU19PSzoKLSAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBs
ZXRlKTsKLSAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKLSAgICAgICAgbV9kZWNvZGVy
ID0gMDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBWUDhfU1RBVFVTX1NVU1BFTkRF
RDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6CisgICAgY29uc3QgVlA4U3Rh
dHVzQ29kZSBzdGF0dXMgPSBXZWJQSVVwZGF0ZShtX2RlY29kZXIsIGRhdGFCeXRlcywgZGF0YVNp
emUpOworICAgIGlmIChzdGF0dXMgIT0gVlA4X1NUQVRVU19PSyAmJiBzdGF0dXMgIT0gVlA4X1NU
QVRVU19TVVNQRU5ERUQpIHsKICAgICAgICAgV2ViUElEZWxldGUobV9kZWNvZGVyKTsKICAgICAg
ICAgbV9kZWNvZGVyID0gMDsKICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0KKyAg
ICBpbnQgbGFzdFkgPSAwOworICAgIGlmICghV2ViUElEZWNHZXRSR0IobV9kZWNvZGVyLCAmbGFz
dFksIDAsIDAsIDApKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgQVNTRVJUKGxh
c3RZID49IDApOworICAgIEFTU0VSVChsYXN0WSA8PSBzaXplKCkuaGVpZ2h0KCkpOworICAgIGJ1
ZmZlci5zZXRMYXN0RGVjb2RlZFJvdyhsYXN0WSA/IGxhc3RZIC0gMSA6IDApOworCisgICAgaWYg
KHN0YXR1cyA9PSBWUDhfU1RBVFVTX1NVU1BFTkRFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlKTsKKyAgICBX
ZWJQSURlbGV0ZShtX2RlY29kZXIpOworICAgIG1fZGVjb2RlciA9IDA7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCmluZGV4IDQ4ZWEwNTQ3MGRkZjA0YmQxMDQyZDVlYjMwYzE2YmZjZTc4
ZDNiMTQuLjhlNmI5NDhlZTZlNjhkM2FmZDAzZjY3MDg3ZjJhMTAzMjI0OGVlZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IHVzYWJsZVdpZHRo
ID0gY1dpZHRoIC0gMjsKICAgICAgICAgICAgIExheW91dFVuaXQgdXNhYmxlSGVpZ2h0ID0gY0hl
aWdodCAtIDI7CiAKLSAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2ltYWdlUmVz
b3VyY2UtPmltYWdlKCk7CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSB0b1JldGFpbmVkTW9k
ZUJpdG1hcEltYWdlSWZQb3NzaWJsZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCkuZ2V0KCkpOwog
CiAgICAgICAgICAgICBpZiAobV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgIWlt
YWdlLT5pc051bGwoKSAmJiB1c2FibGVXaWR0aCA+PSBpbWFnZS0+d2lkdGgoKSAmJiB1c2FibGVI
ZWlnaHQgPj0gaW1hZ2UtPmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvcihmcmFtZSgpKTsKQEAgLTMy
OCw3ICszMjgsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAgICAgIGlm
IChjZW50ZXJZIDwgMCkKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7CiAgICAgICAg
ICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsg
Y2VudGVyWCArIDEsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyAxKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCks
IGltYWdlU2l6ZSksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCAr
IGltYWdlT2Zmc2V0KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJh
d24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eW91dFJlY3QmIHJlY3QKICAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBt
X2ltYWdlUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSB8fCBhbGlnbmVkUmVjdC53aWR0aCgpIDw9
IDAgfHwgYWxpZ25lZFJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPEltYWdlPiBpbWcgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKGFsaWduZWRSZWN0Lndp
ZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKTsKKyAgICBJbWFnZSogaW1nID0gdG9SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGlnbmVk
UmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCkpOwogICAgIGlmICghaW1n
IHx8IGltZy0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDUwLDcgKzQ1MCw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29t
cG9zaXRlU291cmNlT3ZlcjsKICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKCkuZ2V0KCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsK
LSAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGlnbmVkUmVj
dC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgYWxpZ25lZFJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZyk7CisgICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltZywgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5l
Rmxvd0JveCopIGNvbnN0CkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBSZW5kZXJJbWFnZTo6YmFj
a2dyb3VuZElzT2JzY3VyZWQoKSBjb25zdAogCiAgICAgLy8gQ2hlY2sgZm9yIGJpdG1hcCBpbWFn
ZSB3aXRoIGFscGhhLgogICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2Uo
KS5nZXQoKTsKLSAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKQorICAgIGlmICghaW1hZ2UgfHwgIWltYWdlLT5p
c0JpdG1hcEltYWdlKCkgfHwgdG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZSktPmN1cnJl
bnRGcmFtZUhhc0FscGhhKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IDk4ODZmYjMxOTgyMzUzZDY0MDIzZjU3NGIwMGMxNGEyMGZiMWZjMmEu
LjU0ZjQxOThkMGI3NDMwMjAwYTE3ZGJlMGU1ZjM5NTQyYzUwNjg2NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAKICNpbmNsdWRlICJBbmltYXRp
b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgpAQCAtMTA3OSw4ICsxMDgwLDE2IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRzKCkKICAgICBpZiAoIWNhY2hlZEltYWdlLT5pc0xv
YWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgdGhl
IGxheWVyIGRvZXNuJ3QgaGF2ZSBhbiBpbm5lciBsYXllciBmb3IgdGhlIGltYWdlLgotICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdlKTsKKyAgICBpZiAoaW1hZ2Ug
IT0gbV9jb21wb3NpdGVkSW1hZ2UpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byB3YWl0IHVudGls
IHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkIGJlZm9yZSBzZXR0aW5nIGl0IG9uIHRoZSBsYXll
ci4KKyAgICAgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIXRvUmV0YWluZWRNb2Rl
Qml0bWFwSW1hZ2UoaW1hZ2UpLT5jdXJyZW50RnJhbWVJc0NvbXBsZXRlKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gVGhpcyBpcyBhIG5vLW9wIGlmIHRoZSBsYXllciBkb2Vz
bid0IGhhdmUgYW4gaW5uZXIgbGF5ZXIgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgbV9ncmFwaGlj
c0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2UoaW1hZ2UpOworICAgICAgICBtX2NvbXBvc2l0ZWRJ
bWFnZSA9IGltYWdlOworICAgIH0KKwogICAgIHVwZGF0ZURyYXdzQ29udGVudCgpOwogICAgIAog
ICAgIC8vIEltYWdlIGFuaW1hdGlvbiBpcyAibGF6eSIsIGluIHRoYXQgaXQgYXV0b21hdGljYWxs
eSBzdG9wcyB1bmxlc3Mgc29tZW9uZSBpcyBkcmF3aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggMGY0MmQzZmI5MWIxNzkzNTk3OWZkYjE4
ZGJkMDZmY2E2OGZiYzg0Yy4uMDcyODBkY2I5NTQwNGEyMTAwNDVjMmNmMDI0OTgxMTFmZWRjNzk2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApA
QCAtMjQxLDYgKzI0MSw4IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG1f
bGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcjsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbV9s
YXllckZvclNjcm9sbENvcm5lcjsKIAorICAgIFJlZlB0cjxJbWFnZT4gbV9jb21wb3NpdGVkSW1h
Z2U7CisKICAgICBJbnRSZWN0IG1fY29tcG9zaXRlZEJvdW5kczsKIAogICAgIGJvb2wgbV9hcnRp
ZmljaWFsbHlJbmZsYXRlZEJvdW5kczsgICAgICAvLyBib3VuZHMgaGFkIHRvIGJlIG1hZGUgbm9u
LXplcm8gdG8gbWFrZSB0cmFuc2Zvcm0tb3JpZ2luIHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTZiZTVjZDQxNmJjZGUyNmUw
YTg1NWJlMWFkY2VhMmI0M2ZjMGI5NS4uYTE5NmU3NWY4YTlkZjFhMjhkYzZlN2JhOTA1NGU5NmYx
NTUxNTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJSZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oIgog
I2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2lu
Y2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTEyNywxNCArMTI4LDE0IEBAIHZv
aWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYpCiAgICAgICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRl
eHQodGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29u
dGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW1h
Z2U+IGltYWdlID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZSgpOworICAgICAgICAgICAgICAgIElt
YWdlKiBpbWFnZSA9IHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2VS
ZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGRlc3RS
ZWN0ID0gbV9vYmplY3RCb3VuZGluZ0JveDsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc3Jj
UmVjdCgwLCAwLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgICAgICAg
ICAgICAgIFNWR0ltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHSW1h
Z2VFbGVtZW50Kj4obm9kZSgpKTsKICAgICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQtPnByZXNl
cnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAg
ICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgICAgICAgICAg
ICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAKaW5kZXggM2JhZWEyN2M5
ZjU1NDgzYWYwNThhYWZiNjE4MTA3MmUyNDRhMDZkMC4uY2RlMTM5ZmNlY2FlNTgzOGYzNjI1Zjlj
ODc5OTBhMzc3MjEwOTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VD
Ry5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0
IFdlYkRhdGEmIGRhdGEsIGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRl
RnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9
IHNvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gZnJhbWUoQWRvcHRDRiwgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAppbmRleCBmYjBkZjdjYWZmY2ExZmEwYjM3ZDZlNjNhOWVl
MTcwODI4ODYwNjA1Li41ZDg2NGEyN2JhOTEwNjAwMzU5MjkxYTU3NmIyNDY0NmIwNTdlMWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgV2ViSW1hZ2UgV2ViSW1hZ2U6OmZyb21EYXRhKGNvbnN0IFdlYkRhdGEmIGRhdGEs
IGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKQogICAgICAgICB9CiAgICAgfQogCi0gICAgSW1h
Z2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGlu
ZGV4KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IHNvdXJjZS5yZXF1ZXN0
RnJhbWVBdEluZGV4KGluZGV4KTsKICAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9
IGFkb3B0UHRyKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgIGlmICghZnJhbWUpCiAgICAg
ICAgIHJldHVybiBXZWJJbWFnZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>