<?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>254871</bug_id>
          
          <creation_ts>2023-04-01 17:14:29 -0700</creation_ts>
          <short_desc>AX: Stop caching 21 isolated object properties that can be expressed entirely in terms of AXCoreObject functions</short_desc>
          <delta_ts>2023-04-03 10:43:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1945987</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-01 17:14:29 -0700</bug_when>
    <thetext>There are many properties we cache unnecessarily because they can be expressed in terms of AXCoreObject functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945988</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-04-01 17:14:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/107516136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945989</commentid>
    <comment_count>2</comment_count>
      <attachid>465730</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-01 17:21:04 -0700</bug_when>
    <thetext>Created attachment 465730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1945990</commentid>
    <comment_count>3</comment_count>
      <attachid>465731</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-04-01 18:43:31 -0700</bug_when>
    <thetext>Created attachment 465731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946235</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-04-03 10:43:48 -0700</bug_when>
    <thetext>Committed 262516@main (604aa4c976ac): &lt;https://commits.webkit.org/262516@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 465731.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465730</attachid>
            <date>2023-04-01 17:21:04 -0700</date>
            <delta_ts>2023-04-01 18:43:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-254871-20230401172103.patch</filename>
            <type>text/plain</type>
            <size>66363</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBmNjJjMzAzNjcxM2IwMmE3NTk5MTc0NWNiMjIxMDVlZDczY2MwMjU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxIEFwciAyMDIzIDE3OjE0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFN0
b3AgY2FjaGluZyAyMSBpc29sYXRlZCBvYmplY3QgcHJvcGVydGllcyB0aGF0IGNhbiBiZQogZXhw
cmVzc2VkIGVudGlyZWx5IGluIHRlcm1zIG9mIEFYQ29yZU9iamVjdCBmdW5jdGlvbnMKIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQ4NzEgcmRhcjovL3Byb2JsZW0v
MTA3NTE2MTM2CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoZXJlIGFyZSBtYW55IHBy
b3BlcnRpZXMgd2UgY2FjaGUgdW5uZWNlc3NhcmlseSBiZWNhdXNlIHRoZXkgY2FuIGJlIGV4cHJl
c3NlZCBpbiB0ZXJtcyBvZiBBWENvcmVPYmplY3QgZnVuY3Rpb25zLgpUaGlzIHBhdGNoIGVsaW1p
bmF0ZXMgMjEgc3VjaCBwcm9wZXJ0aWVzIGJ5IG1vdmluZyB0aGUgaW1wbGVtZW50YXRpb25zIHRv
IEFYQ29yZU9iamVjdC4KClRoaXMgd2lsbCBpbXByb3ZlIG1lbW9yeSB1c2FnZSBhbmQgY29ycmVj
dG5lc3MsIHNpbmNlIGEgcHJvcGVydHkgdGhhdCBpc24ndCBjYWNoZWQgY2Fubm90IGJlY29tZSBz
dGFsZS4KClRoaXMgcGF0Y2ggd2lsbCBhbHNvIGltcHJvdmUgcGVyZm9ybWFuY2UgYm90aCBieSBt
YWtpbmcgbWFueSBvZiB0aGVzZSBmdW5jdGlvbnMgbm9uLXZpcnR1YWwsIGFuZCBieSByZWR1Y2lu
Zwp0aGUgYW1vdW50IG9mIHdvcmsgd2UgaGF2ZSB0byBkbyB1cC1mcm9udCB0byBidWlsZCBBWElz
b2xhdGVkT2JqZWN0cywgd2hpY2ggaGlzdG9yaWNhbGx5IGhhcyBiZWVuIGEgbWFqb3Igc291cmNl
Cm9mIGlzc3Vlcy4KCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
aDoKKGlzVHlwZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuaDoKKGlzVHlwZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6Y2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NsaWRlciBjb25zdCk6IERlbGV0
ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51UmVsYXRlZCBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51IGNv
bnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVC
YXIgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
TWVudUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNIZWFkaW5nIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0
ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRtYXJrIGNvbnN0KTogRGVs
ZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFMYW5kbWFya1JvbGVEZXNj
cmlwdGlvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojps
aXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnN1cHBvcnRzTGl2ZVJlZ2lvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb250ZW50cyk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0J1dHRvbiBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzTWVkaWFUaW1lbGluZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0ltYWdlTWFwTGluayBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTWVkaWFPYmplY3QgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Rl
cFZhbHVlRm9yUmFuZ2UgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0hl
YWRpbmcgY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc01lbnUgY29uc3QpOgooV2Vi
Q29yZTo6QVhDb3JlT2JqZWN0Ojppc01lbnVCYXIgY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0Ojppc01lbnVCdXR0b24gY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1NsaWRl
ciBjb25zdCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25z
dCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOgooV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0Ojppc01lbnVJdGVtIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVj
dDo6aXNMYW5kbWFyayBjb25zdCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzR3JvdXAgY29u
c3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0J1dHRvbiBjb25zdCk6CihXZWJDb3JlOjpB
WENvcmVPYmplY3Q6OmlzVGV4dENvbnRyb2wgY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0
OjpsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6c3Vw
cG9ydHNMaXZlUmVnaW9uIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpjb250ZW50cyk6
CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24pOgooV2ViQ29yZTo6
QVhDb3JlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpo
YXNQb3B1cCBjb25zdCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmFyaWFMYW5kbWFya1JvbGVE
ZXNjcmlwdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Omhhc1BvcHVwIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QpOgooV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6aXNMaXN0Qm94T3B0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmNvbnRlbnRzKTogRGVsZXRlZC4KKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzSW1hZ2VNYXBMaW5rIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKLS0tCiAuLi4vV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgIDIgKy0KIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCB8ICAgNyArLQogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmggICAgIHwgICA2ICstCiAuLi4vQWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwICAgICAgICAgICAgfCAgIDkgLQogLi4uL0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmggICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCB8ICA4NSAtLS0tLS0KIC4uLi9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggICB8ICAxMCAtCiAuLi4vYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAxMTUgLS0tLS0tLS0KIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAyNCArLQogLi4uL0FjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCAgICAgICAgICAgIHwgMjY5ICsrKysrKysrKysrKysr
KystLQogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICAgICAgICAgICAgIHwgIDMw
IC0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggfCAgIDIg
LQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oICAgIHwgICAxIC0K
IC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCAgICAgICB8ICAgMSAtCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgNDIgKy0tCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgMjEgLS0KIC4u
Li9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyMSAtLQogMTcg
ZmlsZXMgY2hhbmdlZCwgMjYzIGluc2VydGlvbnMoKyksIDM4MyBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlZjRh
OWQyZjI1YWYuLjA3M2NkNWExMDBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xMTUwLDcgKzExNTAsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBs
aXZlUmVnaW9uU3RhdHVzID0gQXRvbVN0cmluZyB7IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1
bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRv
V2ViQ29yZVJvbGUoYXJpYVJvbGUpKSB9OwogICAgIH0KIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25TdGF0dXMpKQorICAg
IGlmIChBWENvcmVPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2ZVJlZ2lvblN0
YXR1cykpCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZ2V0T3JDcmVhdGUobm9kZSksICZkb2N1
bWVudCgpLCBBWExpdmVSZWdpb25DcmVhdGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAppbmRleCBj
MWIwMWUzZDA3N2EuLjc2ZWQ4NWMzYjFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgUmVuZGVyRWxlbWVudCogaW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdDsKICAgICB2b2lk
IGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBSZWZQdHI8SFRNTEFyZWFFbGVtZW50PiBtX2FyZWFFbGVtZW50OwpAQCAt
ODAsNCArODAsNyBAQCBwcml2YXRlOgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluaywgaXNJbWFnZU1hcExpbmsoKSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaykgXAorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0Lmlz
QWNjZXNzaWJpbGl0eU9iamVjdCgpICYmIGRvd25jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q+KG9iamVjdCkuaXNJbWFnZU1hcExpbmsoKTsgfSBcCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeyByZXR1cm4g
b2JqZWN0LmlzSW1hZ2VNYXBMaW5rKCk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmgKaW5kZXggNTk5YTc5ODZkOWRhLi44OWM4M2RiZmIzMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwogCi0gICAgYm9vbCBpc01lbnVMaXN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247
IH0KICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAg
LTUyLDQgKzUyLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0eU1lbnVMaXN0LCBp
c01lbnVMaXN0KCkpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdCkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5pc01lbnVMaXN0
KCk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNw
cAppbmRleCAxZDhhNjViM2RhNjcuLjAzNzQ4MmMyZTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAKQEAgLTY4LDE1ICs2OCw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gYWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwOjpjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0Ci17Ci0jaWYgVVNFKEFUU1BJ
KQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0K
LQogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6c2VsZWN0ZWRDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQocmVzdWx0Lmlz
RW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKaW5kZXggZjI0ZTYwYWZkNDJhLi42Y2RiNjMwZjdh
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmgKQEAgLTU2LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVDaGlsZHJlbkNoYW5n
ZWQoKTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBvdmVycmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogbWVudUxpc3RP
cHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCmluZGV4IDc4ZjI5YmVmZGQxNS4uZDBjYzg0NGM5ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApA
QCAtNjYxLDUzICs2NjEsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Byb2dy
ZXNzSW5kaWNhdG9yKCkgY29uc3QKICAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIHx8IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpNZXRlcjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTbGlk
ZXIoKSBjb25zdAotewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxh
dGVkKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudToKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFy
OgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246Ci0gICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW1DaGVja2JveDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlv
OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnUoKSBj
b25zdAotewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI7
Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUJ1dHRvbigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0
dG9uOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVJdGVtKCkgY29u
c3QKLXsKLSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUl0ZW06Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRp
bzoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfQotCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0VuYWJsZWQoKSBjb25zdAog
ewogICAgIC8vIEFSSUEgc2F5cyB0aGF0IHRoZSBkaXNhYmxlZCBzdGF0dXMgYXBwbGllcyB0byB0
aGUgY3VycmVudCBlbGVtZW50IGFuZCBhbGwgZGVzY2VuZGFudCBlbGVtZW50cy4KQEAgLTk4OSwx
MSArOTQyLDYgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om9yaWVudGF0aW9uKCk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVh
ZGluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpIZWFkaW5nOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0xpbmso
KSBjb25zdAogewogICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
V2ViQ29yZUxpbms7CkBAIC0xMDIyLDM5ICs5NzAsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc0ZpZWxkc2V0KCkgY29uc3QKICAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShm
aWVsZHNldFRhZyk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAo
KSBjb25zdAotewotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKLSAg
ICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
ZXh0R3JvdXA7Ci19Ci0KLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNl
bGVjdGVkUmFkaW9CdXR0b24oKQotewotICAgIGlmICghaXNSYWRpb0dyb3VwKCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgLy8gRmluZCB0aGUgY2hpbGQgcmFkaW8gYnV0dG9uIHRo
YXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCi0gICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gJiYgY2hpbGQtPmNoZWNrYm94T3JS
YWRpb1ZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbikKLSAgICAgICAgICAg
IHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUFY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCi17
Ci0gICAgaWYgKCFpc1RhYkxpc3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAv
LyBGSVhNRTogSXMgdGhpcyB2YWxpZD8gQVJJQSB0YWIgaXRlbXMgc3VwcG9ydCBhcmlhLXNlbGVj
dGVkOyBub3QgYXJpYS1jaGVja2VkLgotICAgIC8vIEZpbmQgdGhlIGNoaWxkIHRhYiBpdGVtIHRo
YXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCi0gICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1RhYkl0ZW0o
KSAmJiAoY2hpbGQtPmlzQ2hlY2tlZCgpIHx8IGNoaWxkLT5pc1NlbGVjdGVkKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQogQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVj
a2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGlucHV0ID0gZHluYW1p
Y0Rvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSk7IGlucHV0ICYmIChpbnB1dC0+aXND
aGVja2JveCgpIHx8IGlucHV0LT5pc1JhZGlvQnV0dG9uKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IDUx
NWFkNTMwYWFlMC4uMDU5NDY2MGZmYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC01NiwyMyArNTYsMTUg
QEAgcHVibGljOgogICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c0NvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlz
SGVhZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzTGluaygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNNZW51KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzTWVu
dUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTmF0aXZl
SW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzU2VjdXJlRmllbGQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzU2VhcmNo
RmllbGQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNF
bmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMDIsOCArOTQsNiBAQCBwdWJsaWM6CiAKICAg
ICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAg
IEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJp
bGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggNzYwZjUzMjlmMmFlLi4wYmJjYTdjZWM2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzE5LDE5ICsz
MTksNiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlbCgpCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENv
bnRyb2woKSBjb25zdAotewotICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpT
ZWFyY2hGaWVsZDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKLSAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0gICAgCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQVRleHRDb250cm9sKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEg
fHwgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8
IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwpA
QCAtMzQyLDIzICszMjksNiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTm9uTmF0aXZl
VGV4dENvbnRyb2woKSBjb25zdAogICAgIHJldHVybiAoaXNBUklBVGV4dENvbnRyb2woKSB8fCBo
YXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSkgJiYgIWlzTmF0aXZlVGV4dENvbnRyb2wo
KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRtYXJrKCkgY29uc3QKLXsK
LSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtCYW5uZXI6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21w
bGVtZW50YXJ5OgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudElu
Zm86Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246Ci0gICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgotICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya1JlZ2lvbjoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1Nl
YXJjaDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVs
bGluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlKCkpCkBAIC0yNjE2LDU3ICsyNTg2LDYgQEAg
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcigpKS0+YWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKCk7CiB9CiAKLVN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHN3aXRjaCAocm9sZVZh
bHVlKCkpIHsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKLSAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya0Jhbm5lciJf
cyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5Ogot
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUxhbmRtYXJrQ29tcGxl
bWVudGFyeSJfcyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50
SW5mbzoKLSAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFy
a0NvbnRlbnRJbmZvIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01h
aW46Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtN
YWluIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246
Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtOYXZp
Z2F0aW9uIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
bjoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbjoKLSAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya1JlZ2lvbiJfcyk7Ci0g
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g6Ci0gICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtTZWFyY2giX3MpOwotICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6Ci0gICAgICAgIHJldHVybiBB
WEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25BbGVydCJfcyk7Ci0gICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKLSAgICAgICAgcmV0
dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIl9z
KTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKLSAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbkRpYWxvZyJf
cyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6Ci0gICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25Mb2ciX3MpOwot
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKLSAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiX3Mp
OwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgotICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uU3RhdHVzIl9z
KTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgotICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uVGltZXIiX3Mp
OwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgotICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQURvY3VtZW50Il9zKTsKLSAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250
ZW50R3JvdXBUZXh0KCJBUklBRG9jdW1lbnRBcnRpY2xlIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3Jv
dXBUZXh0KCJBUklBRG9jdW1lbnRNYXRoIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpEb2N1bWVudE5vdGU6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJB
UklBRG9jdW1lbnROb3RlIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50
ZXJmYWNlVG9vbHRpcDoKLSAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFS
SUFVc2VySW50ZXJmYWNlVG9vbHRpcCJfcyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiUGFuZWw6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBVGFi
UGFuZWwiX3MpOwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgot
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQVdlYkFwcGxpY2F0aW9u
Il9zKTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotfQot
CiAvLyBBUklBIHNwZWM6IFVzZXIgYWdlbnRzIG11c3Qgbm90IGV4cG9zZSB0aGUgYXJpYS1yb2xl
ZGVzY3JpcHRpb24gcHJvcGVydHkgaWYgdGhlIGVsZW1lbnQgdG8gd2hpY2ggYXJpYS1yb2xlZGVz
Y3JpcHRpb24gaXMgYXBwbGllZCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgV0FJLUFSSUEgcm9sZSBv
ciBkb2VzIG5vdCBoYXZlIGFuIGltcGxpY2l0IFdBSS1BUklBIHJvbGUgc2VtYW50aWMuCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQVJvbGVEZXNjcmlwdGlvbigpIGNvbnN0
CiB7CkBAIC0yODgxLDE3ICsyODAwLDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBw
b3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFf
cmVsZXZhbnRBdHRyKTsKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJl
Z2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9tU3RyaW5nJiBsaXZlUmVnaW9uU3RhdHVzKQot
ewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsaXZlUmVnaW9uU3Rh
dHVzLCAicG9saXRlIl9zKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsaXZlUmVn
aW9uU3RhdHVzLCAiYXNzZXJ0aXZlIl9zKTsKLX0KLSAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAotewotICAg
IGF1dG8gbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlID0gbGl2ZVJlZ2lvblN0YXR1cygpOwotICAgIHJl
dHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKEF0b21TdHJpbmcg
eyBsaXZlUmVnaW9uU3RhdHVzVmFsdWUgfSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1w
dHkoKTsKLX0KLQogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogeyAKICAgICAv
LyBTZW5kIHRoZSBoaXQgdGVzdCBiYWNrIGludG8gdGhlIHN1Yi1mcmFtZSBpZiBuZWNlc3Nhcnku
CkBAIC0zNTIwLDIzICszNDI4LDYgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3Jv
bGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAK
LUFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmNvbnRlbnRzKCkKLXsKLSAgICBpZiAoaXNUYWJMaXN0KCkpCi0gICAgICAgIHJldHVy
biB0YWJDaGlsZHJlbigpOwotCi0gICAgaWYgKGlzU2Nyb2xsVmlldygpKSB7Ci0gICAgICAgIC8v
IEEgc2Nyb2xsIHZpZXcncyBjb250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHNjcm9s
bCBiYXJzLgotICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igbm9uU2Nyb2xsYmFy
Q2hpbGRyZW47Ci0gICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQg
JiYgIWNoaWxkLT5pc1Njcm9sbGJhcigpKQotICAgICAgICAgICAgICAgIG5vblNjcm9sbGJhckNo
aWxkcmVuLmFwcGVuZChjaGlsZCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5vblNjcm9s
bGJhckNoaWxkcmVuOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotICAgIAogSW50U2l6ZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdAogewogICAgIGlm
IChhdXRvIHNjcm9sbGVyID0gc2Nyb2xsYWJsZUFyZWFBbmNlc3RvcigpKQpAQCAtMzYzNCwxMiAr
MzUyNSw2IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmJ1dHRvblJv
bGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsKIH0K
IAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1dHRvbigpIGNvbnN0Ci17Ci0gICAgYXV0
byByb2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkJ1dHRvbiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247Ci19Ci0KIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKIHsKICAgICByZXR1cm4g
aXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgpKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pigqbm9kZSgpKS5pc0ZpbGVVcGxvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDE3ZDllMzUwYWU2Li5mYTYyMzJm
MjA1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC0xMjEsNyArMTIxLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNBWElz
b2xhdGVkT2JqZWN0SW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc1NlY3VyZUZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGlzQ29udGFpbmVkQnlTZWN1cmVGaWVsZCgpIGNvbnN0OwpAQCAtMTMwLDE1
ICsxMjksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
OTIsOSArMTg1LDggQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogZGlzY2xvc2VkQnlSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICBib29sIGlzRmllbGRz
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNHcm91cCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0ltYWdlTWFwTGlu
aygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZU1hcExpbmsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMDQs
MTEgKzE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmNyZW1lbnRvcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBp
c05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0J1dHRv
bigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzTWV0ZXIoKSBj
b25zdDsKICAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0OwpAQCAtMjU5LDcgKzI0
OCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuU2V0TnVtZXJp
Y1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGNhblNl
dFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogCkBAIC0yODcsOCArMjc1LDYgQEAgcHVibGljOgogICAgIGZsb2F0IG1heFZhbHVl
Rm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9CiAgICAgZmxvYXQgbWlu
VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0KICAgICB2aXJ0
dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAg
IEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZExpc3RJ
dGVtKCk7CiAgICAgaW50IGxheW91dENvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQogICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAw
OyB9CkBAIC0yOTksNyArMjg1LDYgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBT3du
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjdGl2ZURl
c2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzUG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIFN0cmluZyBwb3B1cFZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0OwogICAgIGJv
b2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDMwLDcgKzQxNSw2IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzdWJyb2xlUGxhdGZvcm1TdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgYXJp
YUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTUyMCw3ICs1MDQs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2VsZWN0ZWRD
aGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KICAgICB2
b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CkBAIC02MTQsMTQgKzU5NywxMiBAQCBwdWJsaWM6
CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFUcmVlSXRlbUNvbnRlbnQoKSBv
dmVycmlkZTsKIAogICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24gZmVhdHVyZXMuCi0gICAgYm9vbCBz
dXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlk
ZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNs
dWRlSWZPZmYgPSB0cnVlKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5OjpsaXZl
UmVnaW9uQW5jZXN0b3IoKnRoaXMsIGV4Y2x1ZGVJZk9mZik7IH0KICAgICBjb25zdCBTdHJpbmcg
bGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KICAgICBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVn
aW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSk7Ci0gICAgc3RhdGljIGJvb2wgbGl2
ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJv
b2wgY29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNFbmFibGVkKEVsZW1lbnQqKTsKICAgICBib29s
IGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0OwogCkBAIC02NDcsNyArNjI4
LDYgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsgVXAs
IERvd24sIExlZnQsIFJpZ2h0IH07CiAgICAgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdl
RGlyZWN0aW9uKSBjb25zdDsKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0Owot
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50cygpIG92ZXJyaWRlOwogICAg
IEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Q7CiAgICAgSW50UmVjdCBzY3JvbGxW
aXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUo
Y29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmgKaW5kZXggNmMwMGE4NDM0NjU4Li5hMDRmMjY2NDcwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxl
UmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgIlZp
c2libGVTZWxlY3Rpb24uaCIKQEAgLTg1NSw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eUxpc3RCb3hJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNIZWFkaW5n
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRp
bmc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwogICAgIGJvb2wgaXND
b2RlKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
ZGU7IH0KICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7IH0KQEAgLTg2OSwxNCArODcwLDE0IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdEJveE9wdGlv
bigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNNZW51
UmVsYXRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNNZW51KCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU7IH0KKyAgICBib29sIGlzTWVudUJhcigp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFy
OyB9CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjsgfQorICAgIGJvb2wgaXNNZW51SXRlbSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzU2xpZGVyKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0ID0gMDsKICAgICAvLyBsaXN0cyBzdXBwb3J0
IChsLCB1bCwgb2wsIGRsKQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCA9IDA7CkBA
IC05MjUsOSArOTI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBkaXNj
bG9zZWRCeVJvdygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxkc2V0KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdCgpIGNvbnN0ID0gMDsKKyAgICBib29sIGlzR3JvdXAoKSBjb25zdDsKIAogICAg
IC8vIE5hdGl2ZSBzcGluIGJ1dHRvbnMuCiAgICAgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQpA
QCAtOTM4LDcgKzkzNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0
KCkgY29uc3QgPSAwOwogICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoOyB9CiAgICAgYm9vbCBpc1RvZ2dsZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpU
b2dnbGVCdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0ID0g
MDsKKyAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNO
b25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzVGFiTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OyB9
CiAgICAgYm9vbCBpc1RhYkl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiOyB9CkBAIC05NDgsNyArOTQ3LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wg
aXNTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQnV0dG9uKCkgY29uc3QgPSAw
OworICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIEhhc2hNYXA8
U3RyaW5nLCBBWEVkaXRpbmdTdHlsZVZhbHVlVmFyaWFudD4gcmVzb2x2ZWRFZGl0aW5nU3R5bGVz
KCkgY29uc3QgPSAwOwogCkBAIC05NjYsNyArOTY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNN
b2RlbCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
b2RlbDsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0ID0g
MDsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXli
b2FyZEZvY3VzYWJsZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQo
KSBjb25zdCA9IDA7CkBAIC0xMDE0LDcgKzEwMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIGJvb2wgY2FuU2V0VGV4
dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVl
KCkgY29uc3QgPSAwOworICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsgfQogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0ID0gMDsKICAgICBib29sIGNh
blNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Q7CkBAIC0xMDMyLDggKzEwMzEsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZs
b2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9IDA7Ci0gICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiSXRlbSgpID0gMDsKKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkUmFkaW9C
dXR0b24oKTsKKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpOwogICAgIHZpcnR1
YWwgaW50IGxheW91dENvdW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIGxvYWRp
bmdQcm9ncmVzcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBicmFpbGxlTGFiZWwo
KSBjb25zdCA9IDA7CkBAIC0xMDYyLDcgKzEwNjEsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIG93bmVycygpIGNvbnN0IHsgcmV0dXJuIHJlbGF0ZWRPYmplY3Rz
KEFYUmVsYXRpb25UeXBlOjpPd25lZEJ5KTsgfQogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIHJlbGF0ZWRPYmplY3RzKEFYUmVsYXRpb25UeXBlKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzUG9wdXAoKSBjb25zdCA9IDA7CisgICAgYm9vbCBoYXNQb3B1
cCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCA9IDA7CkBAIC0xMTYyLDcgKzExNjEsNyBA
QCBwdWJsaWM6CiAgICAgLy8gTG9jYWxpemVkIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgb2Jq
ZWN0J3Mgcm9sZS4KICAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBjb25zdCA9
IDA7CiAgICAgLy8gTG9jYWxpemVkIHN0cmluZyB0aGF0IGRlc2NyaWJlcyBBUklBIGxhbmRtYXJr
IHJvbGVzLgotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbigp
IGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkgY29u
c3Q7CiAgICAgLy8gTm9uLWxvY2FsaXplZCBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmpl
Y3QncyBzdWJyb2xlLgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnJvbGVQbGF0Zm9ybVN0cmluZygp
IGNvbnN0ID0gMDsKIApAQCAtMTIzMSw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVk
RnJvbVBhcmVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGls
ZHJlbigpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENoaWxkcmVuKGNv
bnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKQEAgLTEz
MDcsNyArMTMwNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhVHJlZUl0ZW1Db250ZW50KCkgPSAwOwogCiAgICAgLy8gQVJJQSBsaXZlLXJl
Z2lvbiBmZWF0dXJlcy4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wg
ZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgPSAwOworICAgIHN0YXRpYyBib29sIGxpdmVSZWdp
b25TdGF0dXNJc0VuYWJsZWQoY29uc3QgQXRvbVN0cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNM
aXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUp
IGNvbnN0ID0gMDsKICAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9m
ZiA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0
dXMoKSBjb25zdCA9IDA7CkBAIC0xMzI0LDcgKzEzMjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU2Ny
b2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9m
IHRoZSB0b3AtbGV2ZWwgd2luZG93LgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBv
aW50KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudHMoKSA9IDA7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGNvbnRlbnRzKCk7CiAKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4g
dHJ1ZSBmb3IgaXNNYXRoRWxlbWVudCgpLgogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50
KCkgY29uc3QgPSAwOwpAQCAtMTQ2Nyw2ICsxNDY3LDEyMyBAQCBpbmxpbmUgYm9vbCBBWENvcmVP
YmplY3Q6OnNob3VsZENvbXB1dGVUaXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIH0KICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKIAoraW5saW5lIGJvb2wgQVhDb3JlT2JqZWN0Ojppc01lbnVS
ZWxhdGVkKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
QmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJh
ZGlvOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6OmlzTWVudUl0ZW0o
KSBjb25zdAoreworICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6aXNMYW5kbWFyaygpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrQmFubmVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
Q29tcGxlbWVudGFyeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRl
bnRJbmZvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtTZWFyY2g6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6aXNHcm91
cCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91
cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6OmlzQnV0dG9uKCkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgQVhD
b3JlT2JqZWN0Ojppc1RleHRDb250cm9sKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHJvbGVWYWx1
ZSgpKSB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0Vu
YWJsZWQoY29uc3QgQXRvbVN0cmluZyYgbGl2ZVJlZ2lvblN0YXR1cykKK3sKKyAgICByZXR1cm4g
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGl2ZVJlZ2lvblN0YXR1cywgInBvbGl0ZSJf
cykgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGl2ZVJlZ2lvblN0YXR1cywgImFz
c2VydGl2ZSJfcyk7Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6c3VwcG9ydHNMaXZl
UmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAoreworICAgIGF1dG8gbGl2ZVJlZ2lvblN0
YXR1c1ZhbHVlID0gbGl2ZVJlZ2lvblN0YXR1cygpOworICAgIHJldHVybiBleGNsdWRlSWZPZmYg
PyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKEF0b21TdHJpbmcgeyBsaXZlUmVnaW9uU3RhdHVz
VmFsdWUgfSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKK30KKworaW5saW5l
IGJvb2wgQVhDb3JlT2JqZWN0OjpjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBjb250YWlu
ZXJzIHdob3NlIGNoaWxkcmVuIHN1cHBvcnQgYXJpYS1zZWxlY3RlZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CisgICAgLy8gVGhlc2Ugcm9sZXMgYXJl
IGNvbnRhaW5lcnMgd2hvc2UgY2hpbGRyZW4gYXJlIHRyZWF0ZWQgYXMgc2VsZWN0ZWQgYnkgYXNz
aXN0aXZlCisgICAgLy8gdGVjaG5vbG9naWVzLiBXZSBjYW4gZ2V0IHRoZSAic2VsZWN0ZWQiIGl0
ZW0gdmlhIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBvciB0aGUKKyAgICAvLyBmb2N1c2VkIGVsZW1l
bnQuCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51QmFyOgorI2lmIFBMQVRGT1JNKEFUU1BJKQorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnVMaXN0UG9wdXA6CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5l
IFNwaW5CdXR0b25UeXBlIEFYQ29yZU9iamVjdDo6c3BpbkJ1dHRvblR5cGUoKQogewogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaXNTcGluQnV0dG9uKCksICJzcGluQnV0dG9uVHlwZSgpIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBvbiBzcGluYnV0dG9ucy4iKTsKQEAgLTE0OTEsNiArMTYwOCwyMyBA
QCBpbmxpbmUgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhDb3Jl
T2JqZWN0Ojp0YWJDaGlsZHJlbigpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAoraW5saW5lIEFY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYQ29yZU9iamVjdDo6Y29u
dGVudHMoKQoreworICAgIGlmIChpc1RhYkxpc3QoKSkKKyAgICAgICAgcmV0dXJuIHRhYkNoaWxk
cmVuKCk7CisKKyAgICBpZiAoaXNTY3JvbGxWaWV3KCkpIHsKKyAgICAgICAgLy8gQSBzY3JvbGwg
dmlldydzIGNvbnRlbnRzIGFyZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgc2Nyb2xsIGJhcnMuCisg
ICAgICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBub25TY3JvbGxiYXJDaGlsZHJlbjsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKKyAgICAgICAg
ICAgIGlmIChjaGlsZCAmJiAhY2hpbGQtPmlzU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICAgICAg
bm9uU2Nyb2xsYmFyQ2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbm9uU2Nyb2xsYmFyQ2hpbGRyZW47CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisK
IGlubGluZSBib29sIEFYQ29yZU9iamVjdDo6Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGlzVGV4dENvbnRyb2woKTsKQEAgLTE1NTcsNiArMTY5MSw5OSBA
QCBpbmxpbmUgQVhDb3JlT2JqZWN0OjpBWFZhbHVlIEFYQ29yZU9iamVjdDo6dmFsdWUoKQogICAg
IHJldHVybiBzdHJpbmdWYWx1ZSgpOwogfQogCitpbmxpbmUgQVhDb3JlT2JqZWN0KiBBWENvcmVP
YmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24oKQoreworICAgIGlmICghaXNSYWRpb0dyb3VwKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRmluZCB0aGUgY2hpbGQgcmFkaW8g
YnV0dG9uIHRoYXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCisgICAgZm9y
IChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5y
b2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gJiYgY2hpbGQtPmNo
ZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbikKKyAg
ICAgICAgICAgIHJldHVybiBjaGlsZC5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2lubGluZSBBWENvcmVPYmplY3QqIEFYQ29yZU9iamVjdDo6c2VsZWN0ZWRUYWJJdGVt
KCkKK3sKKyAgICBpZiAoIWlzVGFiTGlzdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIEZJWE1FOiBJcyB0aGlzIHZhbGlkPyBBUklBIHRhYiBpdGVtcyBzdXBwb3J0IGFyaWEt
c2VsZWN0ZWQ7IG5vdCBhcmlhLWNoZWNrZWQuCisgICAgLy8gRmluZCB0aGUgY2hpbGQgdGFiIGl0
ZW0gdGhhdCBpcyBzZWxlY3RlZCAoaWUuIHRoZSBpbnRWYWx1ZSA9PSAxKS4KKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkgeworICAgICAgICBpZiAoY2hpbGQtPmlzVGFi
SXRlbSgpICYmIChjaGlsZC0+aXNDaGVja2VkKCkgfHwgY2hpbGQtPmlzU2VsZWN0ZWQoKSkpCisg
ICAgICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRy
OworfQorCitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6Omhhc1BvcHVwKCkgY29uc3QKK3sKKyAg
ICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvcHVwVmFsdWUoKSwgImZhbHNl
Il9zKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0g
cGFyZW50T2JqZWN0KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPYmpl
Y3QoKSkgeworICAgICAgICBpZiAoIWFuY2VzdG9yLT5pc0xpbmsoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYW5j
ZXN0b3ItPnBvcHVwVmFsdWUoKSwgImZhbHNlIl9zKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBTdHJpbmcgQVhDb3JlT2Jq
ZWN0OjphcmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHN3aXRjaCAo
cm9sZVZhbHVlKCkpIHsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5l
cjoKKyAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya0Jh
bm5lciJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50
YXJ5OgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUxhbmRtYXJr
Q29tcGxlbWVudGFyeSJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtD
b250ZW50SW5mbzoKKyAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFM
YW5kbWFya0NvbnRlbnRJbmZvIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5k
bWFya01haW46CisgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFu
ZG1hcmtNYWluIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmln
YXRpb246CisgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1h
cmtOYXZpZ2F0aW9uIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Rv
Y1JlZ2lvbjoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbjoKKyAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya1JlZ2lvbiJf
cyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g6CisgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtTZWFyY2giX3MpOwor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6CisgICAgICAgIHJl
dHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25BbGVydCJfcyk7Cisg
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKKyAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlh
bG9nIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoK
KyAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbkRp
YWxvZyJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6Cisg
ICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25Mb2ci
X3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKKyAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbk1hcnF1
ZWUiX3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgor
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uU3Rh
dHVzIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgor
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uVGlt
ZXIiX3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgorICAgICAgICBy
ZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQURvY3VtZW50Il9zKTsKKyAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6CisgICAgICAgIHJldHVybiBBWEFS
SUFDb250ZW50R3JvdXBUZXh0KCJBUklBRG9jdW1lbnRBcnRpY2xlIl9zKTsKKyAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6CisgICAgICAgIHJldHVybiBBWEFSSUFDb250
ZW50R3JvdXBUZXh0KCJBUklBRG9jdW1lbnRNYXRoIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpEb2N1bWVudE5vdGU6CisgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KCJBUklBRG9jdW1lbnROb3RlIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpV
c2VySW50ZXJmYWNlVG9vbHRpcDoKKyAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRl
eHQoIkFSSUFVc2VySW50ZXJmYWNlVG9vbHRpcCJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6VGFiUGFuZWw6CisgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJB
UklBVGFiUGFuZWwiX3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0
aW9uOgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQVdlYkFwcGxp
Y2F0aW9uIl9zKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorfQorCiBpbmxpbmUgdm9pZCBBWENvcmVPYmplY3Q6OmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0
YWNobWVudFR5cGUgZGV0YWNobWVudFR5cGUpCiB7CiAgICAgZGV0YWNoV3JhcHBlcihkZXRhY2ht
ZW50VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAyYmFhZTljODJjOTUuLjQ4YjQxODVh
MmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDc0LDE1ICsxMDc0LDYgQEAgQVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bGlua2VkT2JqZWMKICAgICByZXR1cm4gbGlua2VkT2JqZWN0czsKIH0KIAotYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoYXNQb3B1cCgpIGNvbnN0Ci17Ci0gICAgLy8gUmV0
dXJuIHRydWUgaWYgdGhpcyBoYXMgdGhlIGFyaWEtaGFzcG9wdXAgYXR0cmlidXRlLCBvciBpZiBp
dCBoYXMgYW4gYW5jZXN0b3Igb2YgdHlwZSBsaW5rIHdpdGggdGhlIGFyaWEtaGFzcG9wdXAgYXR0
cmlidXRlLgotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QWNjZXNzaWJp
bGl0eU9iamVjdD4oKnRoaXMsIHRydWUsIFt0aGlzXSAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiAodGhpcyA9PSAmb2JqZWN0KSA/ICFlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShvYmplY3QucG9wdXBWYWx1ZSgpLCAiZmFsc2UiX3MpCi0g
ICAgICAgICAgICA6IG9iamVjdC5pc0xpbmsoKSAmJiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uob2JqZWN0LnBvcHVwVmFsdWUoKSwgImZhbHNlIl9zKTsKLSAgICB9KTsKLX0KLQogYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c0Ryb3BwaW5nKCkgY29uc3QgCiB7
CiAgICAgcmV0dXJuIGRldGVybWluZURyb3BFZmZlY3RzKCkuc2l6ZSgpOwpAQCAtMzExNiwyNyAr
MzEwNyw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJlciAmJiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6Y2FuSGF2ZUNoaWxkcmVuKCk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6Y2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdAotewotICAgIHN3aXRjaCAocm9sZVZh
bHVlKCkpIHsKLSAgICAvLyBUaGVzZSByb2xlcyBhcmUgY29udGFpbmVycyB3aG9zZSBjaGlsZHJl
biBzdXBwb3J0IGFyaWEtc2VsZWN0ZWQ6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94OgotICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRhYkxpc3Q6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZToK
LSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlR3JpZDoKLSAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpMaXN0OgotICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBjb250YWluZXJzIHdob3Nl
IGNoaWxkcmVuIGFyZSB0cmVhdGVkIGFzIHNlbGVjdGVkIGJ5IGFzc2lzdGl2ZQotICAgIC8vIHRl
Y2hub2xvZ2llcy4gV2UgY2FuIGdldCB0aGUgInNlbGVjdGVkIiBpdGVtIHZpYSBhcmlhLWFjdGl2
ZWRlc2NlbmRhbnQgb3IgdGhlCi0gICAgLy8gZm9jdXNlZCBlbGVtZW50LgotICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVJvbGU6Ok1lbnU6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJh
cjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLX0KLSAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJp
YVNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIHsKICAg
ICAvLyBEZXRlcm1pbmUgd2hpY2ggcm93cyBhcmUgc2VsZWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmlu
ZGV4IDk2YzlhNjE0MmI5Mi4uMmM2Y2Q5Y2I5ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTM0
LDcgKzEzNCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsK
ICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgY2Fu
SGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNlbGVjdGVk
Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTE0Nyw3ICsxNDYsNiBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugc2Vs
ZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXNpYmxlUG9zaXRpb25SYW5nZUluRGlmZmVy
ZW50RG9jdW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdDsKLSAgICBib29s
IGhhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzRHJvcHBpbmco
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzRHJhZ2dpbmcoKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyLmgKaW5kZXggNzI2Yzc2ZTMxZTFhLi4xYjkyYTk5OTUxMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJh
ci5oCkBAIC00NCw3ICs0NCw2IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0
eVNjcm9sbGJhcihTY3JvbGxiYXIqKTsKIAogICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBjYW5TZXROdW1lcmlj
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCmluZGV4IDY5ZjUz
MDA1ZmZjNC4uMmMxNDVlMzVkZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaApAQCAtNDgsNyArNDgsNiBAQCBwcml2YXRlOgog
ICAgIEFYQ29yZU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9Ci0g
ICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29s
IGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICB2
b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmlu
ZGV4IDQ1MGYxMjI0NjlkNS4uNDQxMTJmNDQzNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBBWElzb2xhdGVkT2JqZWN0OjpBWElzb2xhdGVkT2JqZWN0
KGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYmplY3QsIEFYSQogICAgIC8vIEV2
ZXJ5IG9iamVjdCB3aWxsIGhhdmUgYXQgbGVhc3QgdGhpcyBtYW55IHByb3BlcnRpZXMuIFdlIGNh
biBzaHJpbmsgdGhpcyBudW1iZXIKICAgICAvLyB0byBzb21lIGVzdGltYXRlZCBhdmVyYWdlIG9u
Y2Ugd2UgaW1wbGVtZW50IHNwYXJzZSBwcm9wZXJ0eSBzdG9yYWdlIChpLmUuIG9ubHkgc3Rvcmlu
ZwogICAgIC8vIGEgcHJvcGVydHkgaWYgaXQncyBub3QgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGl0
cyB0eXBlKS4KLSAgICBtX3Byb3BlcnR5TWFwLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMTE2KTsK
KyAgICBtX3Byb3BlcnR5TWFwLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoOTYpOwogCiAgICAgaW5p
dGlhbGl6ZVByb3BlcnRpZXMoYXhPYmplY3QsIGlzUm9vdCk7CiB9CkBAIC03MSw3ICs3MSw2IEBA
IEFYSXNvbGF0ZWRPYmplY3Q6On5BWElzb2xhdGVkT2JqZWN0KCkKIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+
JiBheE9iamVjdCwgSXNSb290IGlzUm9vdCkKIHsKICAgICBhdXRvJiBvYmplY3QgPSBheE9iamVj
dC5nZXQoKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUxhbmRtYXJrUm9s
ZURlc2NyaXB0aW9uLCBvYmplY3QuYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0
ZWRDb3B5KCkpOwogCiAgICAgaWYgKG9iamVjdC5hbmNlc3RvckZsYWdzQXJlSW5pdGlhbGl6ZWQo
KSkKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFuY2VzdG9yRmxhZ3MsIG9i
amVjdC5hbmNlc3RvckZsYWdzKCkpOwpAQCAtODAsMzUgKzc5LDI0IEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+JiBheE9iCiAKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNBdHRhY2htZW50
LCBvYmplY3QuaXNBdHRhY2htZW50KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc0J1c3ksIG9iamVjdC5pc0J1c3koKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzQnV0dG9uLCBvYmplY3QuaXNCdXR0b24oKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzQ29udHJvbCwgb2JqZWN0LmlzQ29udHJvbCgpKTsKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkLCBvYmplY3QuaXNFbmFibGVkKCkpOwogICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0V4cGFuZGVkLCBvYmplY3QuaXNFeHBhbmRlZCgp
KTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNGb2N1c2VkLCBvYmplY3QuaXNG
b2N1c2VkKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0dyb3VwLCBvYmpl
Y3QuaXNHcm91cCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNIZWFkaW5n
LCBvYmplY3QuaXNIZWFkaW5nKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0luZGV0ZXJtaW5hdGUsIG9iamVjdC5pc0luZGV0ZXJtaW5hdGUoKSk7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzSW5saW5lVGV4dCwgb2JqZWN0LmlzSW5saW5lVGV4dCgpKTsK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNJbnB1dEltYWdlLCBvYmplY3QuaXNJ
bnB1dEltYWdlKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0xhbmRtYXJr
LCBvYmplY3QuaXNMYW5kbWFyaygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
SXNMaW5rLCBvYmplY3QuaXNMaW5rKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc0xpc3QsIG9iamVjdC5pc0xpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OklzTWVudSwgb2JqZWN0LmlzTWVudSgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6SXNNZW51QmFyLCBvYmplY3QuaXNNZW51QmFyKCkpOwotICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc01lbnVCdXR0b24sIG9iamVjdC5pc01lbnVCdXR0b24oKSk7Ci0gICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUl0ZW0sIG9iamVjdC5pc01lbnVJdGVt
KCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVMaXN0LCBvYmplY3Qu
aXNNZW51TGlzdCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51UmVs
YXRlZCwgb2JqZWN0LmlzTWVudVJlbGF0ZWQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzTXVsdGlTZWxlY3RhYmxlLCBvYmplY3QuaXNNdWx0aVNlbGVjdGFibGUoKSk7CiAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzUHJlc3NlZCwgb2JqZWN0LmlzUHJlc3Nl
ZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNQcm9ncmVzc0luZGljYXRv
ciwgb2JqZWN0LmlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzUmVxdWlyZWQsIG9iamVjdC5pc1JlcXVpcmVkKCkpOwotICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpJc1Njcm9sbGJhciwgb2JqZWN0LmlzU2Nyb2xsYmFyKCkpOwog
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1NlY3VyZUZpZWxkLCBvYmplY3QuaXNT
ZWN1cmVGaWVsZCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTZWxlY3Rl
ZCwgb2JqZWN0LmlzU2VsZWN0ZWQoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzU2xpZGVyLCBvYmplY3QuaXNTbGlkZXIoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzVW52aXNpdGVkLCBvYmplY3QuaXNVbnZpc2l0ZWQoKSk7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSwgb2JqZWN0LmlzVmFs
dWVBdXRvZmlsbEF2YWlsYWJsZSgpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNhY2hlIEFY
UHJvcGVydHlOYW1lOjpJbnNpZGVMaW5rIGluc3RlYWQgb2YgYm90aCBBWFByb3BlcnR5TmFtZTo6
SXNWaXNpdGVkIGFuZCBBWFByb3BlcnR5TmFtZTo6SXNVbnZpc2l0ZWQuCiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OklzVmlzaXRlZCwgb2JqZWN0LmlzVmlzaXRlZCgpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uLCBvYmplY3Qucm9sZURl
c2NyaXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpSb2xlUGxhdGZvcm1TdHJpbmcsIG9iamVjdC5yb2xlUGxhdGZvcm1TdHJpbmcoKS5pc29s
YXRlZENvcHkoKSk7CkBAIC0xMTksNyArMTA3LDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSwg
b2JqZWN0LmRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgc2V0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldEZvY3VzQXR0cmlidXRlLCBvYmplY3QuY2Fu
U2V0Rm9jdXNBdHRyaWJ1dGUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNh
blNldFZhbHVlQXR0cmlidXRlLCBvYmplY3QuY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSk7Ci0gICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldE51bWVyaWNWYWx1ZSwgb2JqZWN0LmNh
blNldE51bWVyaWNWYWx1ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3Vw
cG9ydHNSZXF1aXJlZEF0dHJpYnV0ZSwgb2JqZWN0LnN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUo
KSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFNlbGVjdGVkQXR0cmli
dXRlLCBvYmplY3QuY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSk7CiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkNhblNldFNlbGVjdGVkQ2hpbGRyZW4sIG9iamVjdC5jYW5TZXRTZWxl
Y3RlZENoaWxkcmVuKCkpOwpAQCAtMTI5LDEwICsxMTYsNyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYg
YXhPYgogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWYWx1ZUZvclJhbmdlLCBvYmpl
Y3QudmFsdWVGb3JSYW5nZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TWF4
VmFsdWVGb3JSYW5nZSwgb2JqZWN0Lm1heFZhbHVlRm9yUmFuZ2UoKSk7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6Ok1pblZhbHVlRm9yUmFuZ2UsIG9iamVjdC5taW5WYWx1ZUZvclJh
bmdlKCkpOwotICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJh
ZGlvQnV0dG9uLCBvYmplY3Quc2VsZWN0ZWRSYWRpb0J1dHRvbigpKTsKLSAgICBzZXRPYmplY3RQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtLCBvYmplY3Quc2VsZWN0ZWRU
YWJJdGVtKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFP
d25zLCBvYmplY3Quc3VwcG9ydHNBUklBT3ducygpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SGFzUG9wdXAsIG9iamVjdC5oYXNQb3B1cCgpKTsKICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6UG9wdXBWYWx1ZSwgb2JqZWN0LnBvcHVwVmFsdWUoKS5pc29sYXRlZENv
cHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFJc011bHRpbGluZSwg
b2JqZWN0LmFyaWFJc011bHRpbGluZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6SW52YWxpZFN0YXR1cywgb2JqZWN0LmludmFsaWRTdGF0dXMoKS5pc29sYXRlZENvcHkoKSk7
CkBAIC0xNzIsNyArMTU2LDYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJv
cGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6T3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4ob2JqZWN0
Lm9yaWVudGF0aW9uKCkpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGllcmFy
Y2hpY2FsTGV2ZWwsIG9iamVjdC5oaWVyYXJjaGljYWxMZXZlbCgpKTsKICAgICBzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6TGFuZ3VhZ2UsIG9iamVjdC5sYW5ndWFnZSgpLmlzb2xhdGVkQ29w
eSgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNMaXZlUmVnaW9u
LCBvYmplY3Quc3VwcG9ydHNMaXZlUmVnaW9uKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpMaXZlUmVnaW9uU3RhdHVzLCBvYmplY3QubGl2ZVJlZ2lvblN0YXR1cygpLmlzb2xh
dGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lvblJl
bGV2YW50LCBvYmplY3QubGl2ZVJlZ2lvblJlbGV2YW50KCkuaXNvbGF0ZWRDb3B5KCkpOwogICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaXZlUmVnaW9uQXRvbWljLCBvYmplY3QubGl2
ZVJlZ2lvbkF0b21pYygpKTsKQEAgLTI0NSwxNyArMjI4LDEyIEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+
JiBheE9iCiAgICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpB
UklBVHJlZVJvd3MsIGFyaWFUcmVlUm93cyk7CiAgICAgfQogCi0gICAgaWYgKG9iamVjdC5pc1Rl
eHRDb250cm9sKCkpCi0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RleHRD
b250cm9sLCB0cnVlKTsKLQogICAgIGlmIChvYmplY3QuaXNSYWRpb0J1dHRvbigpKSB7CiAgICAg
ICAgIGlmIChhdXRvIG5hbWVBdHRyaWJ1dGUgPSBvYmplY3QuYXR0cmlidXRlVmFsdWUoIm5hbWUi
X3MpKQogICAgICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok5hbWVBdHRyaWJ1
dGUsIG5hbWVBdHRyaWJ1dGUtPmlzb2xhdGVkQ29weSgpKTsKICAgICB9CiAKICAgICBpZiAob2Jq
ZWN0LmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkpIHsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkNhbkhhdmVTZWxlY3RlZENoaWxkcmVuLCB0cnVlKTsKLQogICAgICAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbjsKICAgICAgICAgb2Jq
ZWN0LnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbik7CiAgICAgICAgIHNldE9iamVj
dFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZENoaWxkcmVuLCBzZWxlY3Rl
ZENoaWxkcmVuKTsKQEAgLTI2NCwxNCArMjQyLDEzIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9i
CiAgICAgaWYgKG9iamVjdC5pc0ltYWdlKCkpCiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpFbWJlZGRlZEltYWdlRGVzY3JpcHRpb24sIG9iamVjdC5lbWJlZGRlZEltYWdlRGVz
Y3JpcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CiAKLSAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Q29udGVudHMsIG9iamVjdC5jb250ZW50cygpKTsKLQogICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciB2aXNpYmxlQ2hpbGRyZW47CiAgICAgb2JqZWN0LnZp
c2libGVDaGlsZHJlbih2aXNpYmxlQ2hpbGRyZW4pOwogICAgIHNldE9iamVjdFZlY3RvclByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpWaXNpYmxlQ2hpbGRyZW4sIHZpc2libGVDaGlsZHJlbik7CiAg
ICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZE9iamVjdHMs
IG9iamVjdC5saW5rZWRPYmplY3RzKCkpOwogCiAgICAgaWYgKG9iamVjdC5pc1NwaW5CdXR0b24o
KSkgeworICAgICAgICAvLyBGSVhNRTogVGhlc2UgcHJvcGVydGllcyBnZXQgb3V0IG9mIGRhdGUg
ZXZlcnkgdGltZSBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6e2NsZWFyQ2hpbGRyZW4sIGFkZENo
aWxkcmVufSBpcyBjYWxsZWQuIFdlIHNob3VsZCBwcm9iYWJseSBqdXN0IG5vdCBjYWNoZSB0aGVz
ZSBwcm9wZXJ0aWVzLgogICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
RGVjcmVtZW50QnV0dG9uLCBvYmplY3QuZGVjcmVtZW50QnV0dG9uKCkpOwogICAgICAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SW5jcmVtZW50QnV0dG9uLCBvYmplY3QuaW5j
cmVtZW50QnV0dG9uKCkpOwogICAgIH0KQEAgLTQ2NywxMyArNDQ0LDYgQEAgdm9pZCBBWElzb2xh
dGVkT2JqZWN0OjpzZXRTZWxlY3RlZENoaWxkcmVuKGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgc2UKICAgICB9KTsKIH0KIAotQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6Y29udGVudHMoKQotewotICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciByZXN1bHQ7Ci0gICAgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbnRlbnRzLCByZXN1bHQpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQoKQog
ewogICAgIGlmIChwYXJlbnQoKS5pc1ZhbGlkKCkpCkBAIC0xNDQzLDEyICsxNDEzLDYgQEAgYm9v
bCBBWElzb2xhdGVkT2JqZWN0Ojppc0xpc3RCb3hPcHRpb24oKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc0ltYWdlTWFwTGluaygpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBi
b29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9ja09iamVjdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggNWZmNjk4ZDNiNWYw
Li45YzgxYjc1YzRkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTU2LDggKzU2LDYg
QEAgcHVibGljOgogICAgIEFYSXNvbGF0ZWRPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHBhcmVudE9iamVjdFVuaWdub3JlZCgpOyB9CiAgICAgQVhJc29sYXRl
ZE9iamVjdCogZWRpdGFibGVBbmNlc3RvcigpIG92ZXJyaWRlIHsgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OmVkaXRhYmxlQW5jZXN0b3IoKnRoaXMpOyB9OwogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRy
aWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OkNhblNldEZvY3VzQXR0cmlidXRlKTsgfQotICAgIGJvb2wgaXNUZXh0Q29udHJv
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNUZXh0Q29udHJvbCk7IH0KLSAgICBib29sIHN1cHBvcnRzTGl2ZVJlZ2lvbihib29s
ID0gdHJ1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpTdXBwb3J0c0xpdmVSZWdpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
ZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpIG92ZXJyaWRlOwpA
QCAtMTE3LDE5ICsxMTUsMTEgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICAvLyBBdHRyaWJ1dGUg
cmV0cmlldmFsIG92ZXJyaWRlcy4KLSAgICBib29sIGlzSGVhZGluZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNIZWFkaW5nKTsg
fQotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMYW5kbWFyayk7IH0KICAgICBib29sIGlzTGlu
aygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNMaW5rKTsgfQogICAgIGJvb2wgaXNTZWN1cmVGaWVsZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTZWN1cmVGaWVs
ZCk7IH0KICAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBdHRhY2htZW50KTsgfQotICAgIGJv
b2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51UmVsYXRlZCk7IH0KLSAgICBib29sIGlzTWVudSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNNZW51KTsgfQotICAgIGJvb2wgaXNNZW51QmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc01lbnVCYXIpOyB9Ci0gICAg
Ym9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUJ1dHRvbik7IH0KLSAgICBib29sIGlzTWVudUl0
ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OklzTWVudUl0ZW0pOyB9CiAgICAgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSW5wdXRJ
bWFnZSk7IH0KICAgICBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzUHJvZ3Jlc3NJbmRp
Y2F0b3IpOyB9Ci0gICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNTbGlkZXIpOyB9CiAgICAgYm9vbCBp
c0NvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQ
cm9wZXJ0eU5hbWU6OklzQ29udHJvbCk7IH0KIAogICAgIGJvb2wgaXNMaXN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0xpc3Qp
OyB9CkBAIC0xNzcsOSArMTY3LDYgQEAgcHJpdmF0ZToKICAgICBBWENvcmVPYmplY3QqIGRpc2Ns
b3NlZEJ5Um93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OkRpc2Nsb3NlZEJ5Um93KTsgfQogCiAgICAgYm9vbCBpc0ZpZWxkc2V0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpJc0ZpZWxkc2V0KTsgfQotICAgIGJvb2wgaXNHcm91cCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCk7IH0KLSAg
ICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTWVudUxpc3QpOyB9Ci0gICAgYm9vbCBpc0J1dHRvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNCdXR0b24pOyB9CiAgICAgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCk7IH0KICAg
ICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVW
YWx1ZShBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkKTsgfQogICAgIGJvb2wgaXNTZWxlY3RlZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNTZWxlY3RlZCk7IH0KQEAgLTE5Myw3ICsxODAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
c3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSk7
IH0KICAgICBTdHJpbmcgZGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpEYXRldGltZUF0dHJp
YnV0ZVZhbHVlKTsgfQogICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFZh
bHVlQXR0cmlidXRlKTsgfQotICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRO
dW1lcmljVmFsdWUpOyB9CiAgICAgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2Fu
U2V0U2VsZWN0ZWRBdHRyaWJ1dGUpOyB9CiAgICAgYm9vbCBjYW5TZXRTZWxlY3RlZENoaWxkcmVu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpDYW5TZXRTZWxlY3RlZENoaWxkcmVuKTsgfQogICAgIC8vIFdlIHNob3VsZCBuZXZlciBj
cmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZyb20gYW4gaWdub3JlZCBsaXZlIG9iamVjdCwgc28g
d2UgY2FuIGhhcmRjb2RlIHRoaXMgdG8gZmFsc2UuCkBAIC0yMDUsMTIgKzE5MSw5IEBAIHByaXZh
dGU6CiAgICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZs
b2F0QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlZhbHVlRm9yUmFuZ2UpOyB9CiAgICAg
ZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZsb2F0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1heFZhbHVlRm9yUmFuZ2UpOyB9CiAgICAgZmxv
YXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZsb2F0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok1pblZhbHVlRm9yUmFuZ2UpOyB9Ci0gICAgQVhDb3Jl
T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkUmFkaW9CdXR0b24pOyB9Ci0gICAg
QVhDb3JlT2JqZWN0KiBzZWxlY3RlZFRhYkl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiBvYmplY3RB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRUYWJJdGVtKTsgfQogICAgIGlu
dCBsYXlvdXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jl
c3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPmxvYWRpbmdQcm9ncmVzcygpOyB9
CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c0FSSUFPd25zKTsgfQotICAg
IGJvb2wgaGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcHVwKTsgfQogICAgIFN0cmluZyBwb3B1cFZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlBvcHVwVmFsdWUpOyB9CiAgICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFSSUFJc011bHRpbGluZSk7IH0K
QEAgLTI0Nyw3ICsyMzAsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyByb2xlUGxhdGZvcm1TdHJp
bmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6Um9sZVBsYXRmb3JtU3RyaW5nKTsgfQogICAgIFN0cmluZyByb2xlRGVzY3JpcHRp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6Um9sZURlc2NyaXB0aW9uKTsgfQogICAgIFN0cmluZyBzdWJyb2xlUGxhdGZvcm1T
dHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6U3Vicm9sZVBsYXRmb3JtU3RyaW5nKTsgfQotICAgIFN0cmluZyBhcmlhTGFu
ZG1hcmtSb2xlRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdHJpbmdBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QVJJQUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKTsg
fQogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBJbnRQ
b2ludCBjbGlja1BvaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChW
ZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0cykgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMDgs
MTEgKzI5MCw5IEBAIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uPihpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6T3JpZW50YXRp
b24pKTsgfQogICAgIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SGllcmFyY2hp
Y2FsTGV2ZWwpOyB9CiAgICAgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okxhbmd1YWdlKTsgfQotICAg
IGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBi
b29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhbkhhdmVTZWxlY3RlZENoaWxkcmVu
KTsgfQogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIGNoaWxkcmVuKSBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpTZWxlY3RlZENoaWxkcmVuLCBjaGlsZHJlbik7IH0KICAgICB2b2lkIHNl
dFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBjaGlsZHJlbikgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6VmlzaWJsZUNoaWxkcmVuLCBjaGlsZHJlbik7IH0KLSAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudHMoKSBvdmVycmlkZTsKICAgICBBdG9tU3RyaW5n
IHRhZ05hbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGNoaWxkcmVuKGJvb2wgdXBkYXRlQ2hpbGRyZW5JZk5lZWRlZCA9IHRydWUpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwpA
QCAtNDQ0LDcgKzQyNCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRy
b2woKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTGlzdEJveE9wdGlvbigpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIGlzTW9ja09iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNOb25OYXRpdmVU
ZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc0luZGV0ZXJtaW5hdGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBmNGMxOWU2NDdj
MmQuLmRjMzRjYjM5YTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC01Miw3ICs1Miw2IEBA
IGVudW0gY2xhc3MgQVhTdHJlYW1PcHRpb25zIDogdWludDhfdDsKIAogZW51bSBjbGFzcyBBWFBy
b3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBBUklBSXNNdWx0aWxpbmUsCi0gICAgQVJJQUxh
bmRtYXJrUm9sZURlc2NyaXB0aW9uLAogICAgIEFSSUFUcmVlSXRlbUNvbnRlbnQsCiAgICAgQVJJ
QVRyZWVSb3dzLAogICAgIEF0dHJpYnV0ZWRUZXh0LApAQCAtNjksOSArNjgsNyBAQCBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIEJyYWlsbGVMYWJlbCwKICAgICBC
cmFpbGxlUm9sZURlc2NyaXB0aW9uLAogICAgIEJ1dHRvblN0YXRlLAotICAgIENhbkhhdmVTZWxl
Y3RlZENoaWxkcmVuLAogICAgIENhblNldEZvY3VzQXR0cmlidXRlLAotICAgIENhblNldE51bWVy
aWNWYWx1ZSwKICAgICBDYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSwKICAgICBDYW5TZXRTZWxlY3Rl
ZENoaWxkcmVuLAogICAgIENhblNldFZhbHVlQXR0cmlidXRlLApAQCAtODYsNyArODMsNiBAQCBl
bnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIENvbHVtbkhlYWRlcnMs
CiAgICAgQ29sdW1uSW5kZXgsCiAgICAgQ29sdW1uSW5kZXhSYW5nZSwKLSAgICBDb250ZW50cywK
ICAgICBDdXJyZW50U3RhdGUsCiAgICAgRGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSwKICAgICBEZWNy
ZW1lbnRCdXR0b24sCkBAIC0xMDQsNyArMTAwLDYgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFt
ZSA6IHVpbnQxNl90IHsKICAgICBIYXNIaWdobGlnaHRpbmcsCiAgICAgSGFzSXRhbGljRm9udCwK
ICAgICBIYXNQbGFpblRleHQsCi0gICAgSGFzUG9wdXAsCiAgICAgSGFzVW5kZXJsaW5lLAogICAg
IEhlYWRlckNvbnRhaW5lciwKICAgICBIZWFkaW5nTGV2ZWwsCkBAIC0xMTgsNyArMTEzLDYgQEAg
ZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc0dyYWJiZWQsCiAg
ICAgSXNBUklBVHJlZUdyaWRSb3csCiAgICAgSXNBdHRhY2htZW50LAotICAgIElzQnV0dG9uLAog
ICAgIElzQnVzeSwKICAgICBJc0NoZWNrZWQsCiAgICAgSXNDb250cm9sLApAQCAtMTI3LDEzICsx
MjEsMTAgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc0V4
cG9zYWJsZSwKICAgICBJc0ZpZWxkc2V0LAogICAgIElzRm9jdXNlZCwKLSAgICBJc0dyb3VwLAog
ICAgIElzSW5kZXRlcm1pbmF0ZSwKICAgICBJc0lubGluZVRleHQsCiAgICAgSXNJbnB1dEltYWdl
LAotICAgIElzSGVhZGluZywKICAgICBJc0tleWJvYXJkRm9jdXNhYmxlLAotICAgIElzTGFuZG1h
cmssCiAgICAgSXNMaW5rLAogICAgIElzTGlzdCwKICAgICBJc0xpc3RCb3gsCkBAIC0xNTAsMjYg
KzE0MSwxNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIElz
TWF0aFRhYmxlQ2VsbCwKICAgICBJc01hdGhNdWx0aXNjcmlwdCwKICAgICBJc01hdGhUb2tlbiwK
LSAgICBJc01lbnUsCi0gICAgSXNNZW51QmFyLAotICAgIElzTWVudUJ1dHRvbiwKLSAgICBJc01l
bnVJdGVtLAotICAgIElzTWVudUxpc3QsCi0gICAgSXNNZW51UmVsYXRlZCwKICAgICBJc011bHRp
U2VsZWN0YWJsZSwKICAgICBJc1ByZXNzZWQsCiAgICAgSXNQcm9ncmVzc0luZGljYXRvciwKICAg
ICBJc1JlcXVpcmVkLAotICAgIElzU2Nyb2xsYmFyLAogICAgIElzU2VjdXJlRmllbGQsCiAgICAg
SXNTZWxlY3RlZCwKICAgICBJc1NlbGVjdGVkT3B0aW9uQWN0aXZlLAotICAgIElzU2xpZGVyLAog
ICAgIElzVGFibGUsCiAgICAgSXNUYWJsZUNlbGwsCiAgICAgSXNUYWJsZUNvbHVtbiwKICAgICBJ
c1RhYmxlUm93LAotICAgIElzVGV4dENvbnRyb2wsCiAgICAgSXNUcmVlLAogICAgIElzVHJlZUl0
ZW0sCiAgICAgSXNVbnZpc2l0ZWQsCkBAIC0yMTgsOCArMjAwLDYgQEAgZW51bSBjbGFzcyBBWFBy
b3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBSb3dJbmRleCwKICAgICBSb3dJbmRleFJhbmdl
LAogICAgIFNlbGVjdGVkQ2hpbGRyZW4sCi0gICAgU2VsZWN0ZWRSYWRpb0J1dHRvbiwKLSAgICBT
ZWxlY3RlZFRhYkl0ZW0sCiAgICAgU2Vzc2lvbklELAogICAgIFNldFNpemUsCiAgICAgU29ydERp
cmVjdGlvbiwKQEAgLTIzNSw3ICsyMTUsNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDog
dWludDE2X3QgewogICAgIFN1cHBvcnRzRXhwYW5kZWQsCiAgICAgU3VwcG9ydHNFeHBhbmRlZFRl
eHRWYWx1ZSwKICAgICBTdXBwb3J0c0tleVNob3J0Y3V0cywKLSAgICBTdXBwb3J0c0xpdmVSZWdp
b24sCiAgICAgU3VwcG9ydHNQYXRoLAogICAgIFN1cHBvcnRzUG9zSW5TZXQsCiAgICAgU3VwcG9y
dHNQcmVzc0FjdGlvbiwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465731</attachid>
            <date>2023-04-01 18:43:31 -0700</date>
            <delta_ts>2023-04-03 10:43:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-254871-20230401184330.patch</filename>
            <type>text/plain</type>
            <size>66358</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA4ZTFlODMwYjllYzZjYzdhNDczOGM2NDM1NzY4OGRhMDExZjJhNTBjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogU2F0LCAxIEFwciAyMDIzIDE3OjE0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFN0
b3AgY2FjaGluZyAyMSBpc29sYXRlZCBvYmplY3QgcHJvcGVydGllcyB0aGF0IGNhbiBiZQogZXhw
cmVzc2VkIGVudGlyZWx5IGluIHRlcm1zIG9mIEFYQ29yZU9iamVjdCBmdW5jdGlvbnMKIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQ4NzEgcmRhcjovL3Byb2JsZW0v
MTA3NTE2MTM2CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoZXJlIGFyZSBtYW55IHBy
b3BlcnRpZXMgd2UgY2FjaGUgdW5uZWNlc3NhcmlseSBiZWNhdXNlIHRoZXkgY2FuIGJlIGV4cHJl
c3NlZCBpbiB0ZXJtcyBvZiBBWENvcmVPYmplY3QgZnVuY3Rpb25zLgpUaGlzIHBhdGNoIGVsaW1p
bmF0ZXMgMjEgc3VjaCBwcm9wZXJ0aWVzIGJ5IG1vdmluZyB0aGUgaW1wbGVtZW50YXRpb25zIHRv
IEFYQ29yZU9iamVjdC4KClRoaXMgd2lsbCBpbXByb3ZlIG1lbW9yeSB1c2FnZSBhbmQgY29ycmVj
dG5lc3MsIHNpbmNlIGEgcHJvcGVydHkgdGhhdCBpc24ndCBjYWNoZWQgY2Fubm90IGJlY29tZSBz
dGFsZS4KClRoaXMgcGF0Y2ggd2lsbCBhbHNvIGltcHJvdmUgcGVyZm9ybWFuY2UgYm90aCBieSBt
YWtpbmcgbWFueSBvZiB0aGVzZSBmdW5jdGlvbnMgbm9uLXZpcnR1YWwsIGFuZCBieSByZWR1Y2lu
Zwp0aGUgYW1vdW50IG9mIHdvcmsgd2UgaGF2ZSB0byBkbyB1cC1mcm9udCB0byBidWlsZCBBWElz
b2xhdGVkT2JqZWN0cywgd2hpY2ggaGlzdG9yaWNhbGx5IGhhcyBiZWVuIGEgbWFqb3Igc291cmNl
Cm9mIGlzc3Vlcy4KCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKToK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsu
aDoKKGlzVHlwZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuaDoKKGlzVHlwZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TWVudUxp
c3RQb3B1cDo6Y2FuSGF2ZVNlbGVjdGVkQ2hpbGRyZW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1NsaWRlciBjb25zdCk6IERlbGV0
ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51UmVsYXRlZCBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51IGNv
bnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVC
YXIgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
TWVudUJ1dHRvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aXNNZW51SXRlbSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNIZWFkaW5nIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc0dyb3VwIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFJhZGlvQnV0dG9uKTogRGVsZXRlZC4KKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoK
KiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUZXh0Q29udHJvbCBjb25zdCk6IERlbGV0
ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRtYXJrIGNvbnN0KTogRGVs
ZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFMYW5kbWFya1JvbGVEZXNj
cmlwdGlvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojps
aXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnN1cHBvcnRzTGl2ZVJlZ2lvbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb250ZW50cyk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc0J1dHRvbiBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0F0dGFjaG1lbnRFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmlzTWVkaWFUaW1lbGluZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0ltYWdlTWFwTGluayBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc01lbnVMaXN0IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6
OmlzTWVkaWFPYmplY3QgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3Rl
cFZhbHVlRm9yUmFuZ2UgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0hl
YWRpbmcgY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc01lbnUgY29uc3QpOgooV2Vi
Q29yZTo6QVhDb3JlT2JqZWN0Ojppc01lbnVCYXIgY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2Jq
ZWN0Ojppc01lbnVCdXR0b24gY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc1NsaWRl
ciBjb25zdCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmNhblNldE51bWVyaWNWYWx1ZSBjb25z
dCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzTWVudVJlbGF0ZWQgY29uc3QpOgooV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0Ojppc01lbnVJdGVtIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVj
dDo6aXNMYW5kbWFyayBjb25zdCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmlzR3JvdXAgY29u
c3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojppc0J1dHRvbiBjb25zdCk6CihXZWJDb3JlOjpB
WENvcmVPYmplY3Q6OmlzVGV4dENvbnRyb2wgY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0
OjpsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6c3Vw
cG9ydHNMaXZlUmVnaW9uIGNvbnN0KToKKFdlYkNvcmU6OkFYQ29yZU9iamVjdDo6Y2FuSGF2ZVNl
bGVjdGVkQ2hpbGRyZW4gY29uc3QpOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpjb250ZW50cyk6
CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24pOgooV2ViQ29yZTo6
QVhDb3JlT2JqZWN0OjpzZWxlY3RlZFRhYkl0ZW0pOgooV2ViQ29yZTo6QVhDb3JlT2JqZWN0Ojpo
YXNQb3B1cCBjb25zdCk6CihXZWJDb3JlOjpBWENvcmVPYmplY3Q6OmFyaWFMYW5kbWFya1JvbGVE
ZXNjcmlwdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Omhhc1BvcHVwIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmNhbkhhdmVTZWxlY3RlZENoaWxkcmVuIGNvbnN0KTogRGVsZXRlZC4KKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaDoKKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QpOgooV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6aXNMaXN0Qm94T3B0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmNvbnRlbnRzKTogRGVsZXRlZC4KKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmlzSW1hZ2VNYXBMaW5rIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKLS0tCiAuLi4vV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAgIDIgKy0KIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCB8ICAgNyArLQogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmggICAgIHwgICA2ICstCiAuLi4vQWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwICAgICAgICAgICAgfCAgIDkgLQogLi4uL0FjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwLmggICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCB8ICA4NSAtLS0tLS0KIC4uLi9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggICB8ICAxMCAtCiAuLi4vYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAxMTUgLS0tLS0tLS0KIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAyNCArLQogLi4uL0FjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCAgICAgICAgICAgIHwgMjY5ICsrKysrKysrKysrKysr
KystLQogLi4uL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICAgICAgICAgICAgIHwgIDMw
IC0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggfCAgIDIg
LQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oICAgIHwgICAxIC0K
IC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaCAgICAgICB8ICAgMSAtCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgNDIgKy0tCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAgfCAgMjEgLS0KIC4u
Li9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAyMSAtLQogMTcg
ZmlsZXMgY2hhbmdlZCwgMjYzIGluc2VydGlvbnMoKyksIDM4MyBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlZjRh
OWQyZjI1YWYuLjA3M2NkNWExMDBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xMTUwLDcgKzExNTAsNyBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZUxpdmVSZWdpb25DcmVhdGVkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBs
aXZlUmVnaW9uU3RhdHVzID0gQXRvbVN0cmluZyB7IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1
bHRMaXZlUmVnaW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhUm9sZVRv
V2ViQ29yZVJvbGUoYXJpYVJvbGUpKSB9OwogICAgIH0KIAotICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKGxpdmVSZWdpb25TdGF0dXMpKQorICAg
IGlmIChBWENvcmVPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0VuYWJsZWQobGl2ZVJlZ2lvblN0
YXR1cykpCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZ2V0T3JDcmVhdGUobm9kZSksICZkb2N1
bWVudCgpLCBBWExpdmVSZWdpb25DcmVhdGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAppbmRleCBj
MWIwMWUzZDA3N2EuLjc2ZWQ4NWMzYjFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgUmVuZGVyRWxlbWVudCogaW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdDsKICAgICB2b2lk
IGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBSZWZQdHI8SFRNTEFyZWFFbGVtZW50PiBtX2FyZWFFbGVtZW50OwpAQCAt
ODAsNCArODAsNyBAQCBwcml2YXRlOgogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluaywgaXNJbWFnZU1hcExpbmsoKSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluaykgXAorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBWENvcmVPYmplY3QmIG9iamVjdCkgeyByZXR1cm4gb2JqZWN0Lmlz
QWNjZXNzaWJpbGl0eU9iamVjdCgpICYmIGRvd25jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q+KG9iamVjdCkuaXNJbWFnZU1hcExpbmsoKTsgfSBcCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkgeyByZXR1cm4g
b2JqZWN0LmlzSW1hZ2VNYXBMaW5rKCk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmgKaW5kZXggNTk5YTc5ODZkOWRhLi44OWM4M2RiZmIzMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwogCi0gICAgYm9vbCBpc01lbnVMaXN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6UG9wVXBCdXR0b247
IH0KICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAg
LTUyLDQgKzUyLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0eU1lbnVMaXN0LCBp
c01lbnVMaXN0KCkpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNZW51TGlzdCkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpIHsgcmV0dXJuIG9iamVjdC5pc01lbnVMaXN0
KCk7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNw
cAppbmRleCAxZDhhNjViM2RhNjcuLjAzNzQ4MmMyZTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAKQEAgLTY4LDE1ICs2OCw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gYWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlNZW51TGlz
dFBvcHVwOjpjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0Ci17Ci0jaWYgVVNFKEFUU1BJ
KQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0K
LQogdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6c2VsZWN0ZWRDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQocmVzdWx0Lmlz
RW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmgKaW5kZXggZjI0ZTYwYWZkNDJhLi42Y2RiNjMwZjdh
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0UG9wdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmgKQEAgLTU2LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVDaGlsZHJlbkNoYW5n
ZWQoKTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBvdmVycmlkZTsKIAogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogbWVudUxpc3RP
cHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCmluZGV4IDc4ZjI5YmVmZGQxNS4uZDBjYzg0NGM5ZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApA
QCAtNjYxLDUzICs2NjEsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Byb2dy
ZXNzSW5kaWNhdG9yKCkgY29uc3QKICAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OlByb2dyZXNzSW5kaWNhdG9yIHx8IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpNZXRlcjsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNTbGlk
ZXIoKSBjb25zdAotewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6U2xpZGVyOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVSZWxh
dGVkKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudToKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFy
OgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246Ci0gICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dUl0ZW1DaGVja2JveDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJhZGlv
OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnUoKSBj
b25zdAotewotICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVu
dTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNNZW51QmFyKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI7
Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUJ1dHRvbigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QnV0
dG9uOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVJdGVtKCkgY29u
c3QKLXsKLSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TWVudUl0ZW06Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW1SYWRp
bzoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbUNoZWNrYm94OgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfQotCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0VuYWJsZWQoKSBjb25zdAog
ewogICAgIC8vIEFSSUEgc2F5cyB0aGF0IHRoZSBkaXNhYmxlZCBzdGF0dXMgYXBwbGllcyB0byB0
aGUgY3VycmVudCBlbGVtZW50IGFuZCBhbGwgZGVzY2VuZGFudCBlbGVtZW50cy4KQEAgLTk4OSwx
MSArOTQyLDYgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjpvcmllbnRhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6
Om9yaWVudGF0aW9uKCk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSGVh
ZGluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlS
b2xlOjpIZWFkaW5nOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0xpbmso
KSBjb25zdAogewogICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
V2ViQ29yZUxpbms7CkBAIC0xMDIyLDM5ICs5NzAsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc0ZpZWxkc2V0KCkgY29uc3QKICAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShm
aWVsZHNldFRhZyk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzR3JvdXAo
KSBjb25zdAotewotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKLSAg
ICByZXR1cm4gcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3JvdXAgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGV4dEdyb3VwIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkFw
cGxpY2F0aW9uR3JvdXAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25U
ZXh0R3JvdXA7Ci19Ci0KLUFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNl
bGVjdGVkUmFkaW9CdXR0b24oKQotewotICAgIGlmICghaXNSYWRpb0dyb3VwKCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgLy8gRmluZCB0aGUgY2hpbGQgcmFkaW8gYnV0dG9uIHRo
YXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCi0gICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUo
KSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UmFkaW9CdXR0b24gJiYgY2hpbGQtPmNoZWNrYm94T3JS
YWRpb1ZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlOjpPbikKLSAgICAgICAgICAg
IHJldHVybiBjaGlsZC5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUFY
Q29yZU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCi17
Ci0gICAgaWYgKCFpc1RhYkxpc3QoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAv
LyBGSVhNRTogSXMgdGhpcyB2YWxpZD8gQVJJQSB0YWIgaXRlbXMgc3VwcG9ydCBhcmlhLXNlbGVj
dGVkOyBub3QgYXJpYS1jaGVja2VkLgotICAgIC8vIEZpbmQgdGhlIGNoaWxkIHRhYiBpdGVtIHRo
YXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCi0gICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1RhYkl0ZW0o
KSAmJiAoY2hpbGQtPmlzQ2hlY2tlZCgpIHx8IGNoaWxkLT5pc1NlbGVjdGVkKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQogQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVj
a2JveE9yUmFkaW9WYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIGlucHV0ID0gZHluYW1p
Y0Rvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUoKSk7IGlucHV0ICYmIChpbnB1dC0+aXND
aGVja2JveCgpIHx8IGlucHV0LT5pc1JhZGlvQnV0dG9uKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IDUx
NWFkNTMwYWFlMC4uMDU5NDY2MGZmYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC01NiwyMyArNTYsMTUg
QEAgcHVibGljOgogICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c0NvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlz
SGVhZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzTGluaygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNNZW51KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzTWVu
dUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTmF0aXZl
SW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzU2VjdXJlRmllbGQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzU2VhcmNo
RmllbGQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGlzQ2hlY2tlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNF
bmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xMDIsOCArOTQsNiBAQCBwdWJsaWM6CiAKICAg
ICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlOwotICAg
IEFYQ29yZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJp
bGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
aW5kZXggNzYwZjUzMjlmMmFlLi4wYmJjYTdjZWM2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzE5LDE5ICsz
MTksNiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlbCgpCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVGV4dENv
bnRyb2woKSBjb25zdAotewotICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb21ib0JveDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpT
ZWFyY2hGaWVsZDoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0QXJlYToKLSAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0gICAgCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVJJQVRleHRDb250cm9sKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEFyZWEg
fHwgYXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkIHx8
IGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNlYXJjaEZpZWxkOwpA
QCAtMzQyLDIzICszMjksNiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTm9uTmF0aXZl
VGV4dENvbnRyb2woKSBjb25zdAogICAgIHJldHVybiAoaXNBUklBVGV4dENvbnRyb2woKSB8fCBo
YXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSkgJiYgIWlzTmF0aXZlVGV4dENvbnRyb2wo
KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0xhbmRtYXJrKCkgY29uc3QKLXsK
LSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGFuZG1hcmtCYW5uZXI6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21w
bGVtZW50YXJ5OgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVudElu
Zm86Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdpb246Ci0gICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtNYWluOgotICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6OkxhbmRtYXJrTmF2aWdhdGlvbjoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpMYW5kbWFya1JlZ2lvbjoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1Nl
YXJjaDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVs
bGluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlKCkpCkBAIC0yNjE2LDU3ICsyNTg2LDYgQEAg
U3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckltYWdlPihyZW5kZXJlcigpKS0+YWNjZXNz
aWJpbGl0eURlc2NyaXB0aW9uKCk7CiB9CiAKLVN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIHN3aXRjaCAocm9sZVZh
bHVlKCkpIHsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0Jhbm5lcjoKLSAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya0Jhbm5lciJf
cyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb21wbGVtZW50YXJ5Ogot
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUxhbmRtYXJrQ29tcGxl
bWVudGFyeSJfcyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtDb250ZW50
SW5mbzoKLSAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFy
a0NvbnRlbnRJbmZvIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya01h
aW46Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtN
YWluIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246
Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtOYXZp
Z2F0aW9uIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0RvY1JlZ2lv
bjoKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya1JlZ2lvbjoKLSAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya1JlZ2lvbiJfcyk7Ci0g
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtTZWFyY2g6Ci0gICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtTZWFyY2giX3MpOwotICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnQ6Ci0gICAgICAgIHJldHVybiBB
WEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25BbGVydCJfcyk7Ci0gICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25BbGVydERpYWxvZzoKLSAgICAgICAgcmV0
dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIl9z
KTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkRpYWxvZzoKLSAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbkRpYWxvZyJf
cyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25Mb2c6Ci0gICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25Mb2ciX3MpOwot
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTWFycXVlZToKLSAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvbk1hcnF1ZWUiX3Mp
OwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uU3RhdHVzOgotICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uU3RhdHVzIl9z
KTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblRpbWVyOgotICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uVGltZXIiX3Mp
OwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkRvY3VtZW50OgotICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQURvY3VtZW50Il9zKTsKLSAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpEb2N1bWVudEFydGljbGU6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250
ZW50R3JvdXBUZXh0KCJBUklBRG9jdW1lbnRBcnRpY2xlIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpEb2N1bWVudE1hdGg6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3Jv
dXBUZXh0KCJBUklBRG9jdW1lbnRNYXRoIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xl
OjpEb2N1bWVudE5vdGU6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJB
UklBRG9jdW1lbnROb3RlIl9zKTsKLSAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpVc2VySW50
ZXJmYWNlVG9vbHRpcDoKLSAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFS
SUFVc2VySW50ZXJmYWNlVG9vbHRpcCJfcyk7Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
VGFiUGFuZWw6Ci0gICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBVGFi
UGFuZWwiX3MpOwotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OldlYkFwcGxpY2F0aW9uOgot
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQVdlYkFwcGxpY2F0aW9u
Il9zKTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotfQot
CiAvLyBBUklBIHNwZWM6IFVzZXIgYWdlbnRzIG11c3Qgbm90IGV4cG9zZSB0aGUgYXJpYS1yb2xl
ZGVzY3JpcHRpb24gcHJvcGVydHkgaWYgdGhlIGVsZW1lbnQgdG8gd2hpY2ggYXJpYS1yb2xlZGVz
Y3JpcHRpb24gaXMgYXBwbGllZCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgV0FJLUFSSUEgcm9sZSBv
ciBkb2VzIG5vdCBoYXZlIGFuIGltcGxpY2l0IFdBSS1BUklBIHJvbGUgc2VtYW50aWMuCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQVJvbGVEZXNjcmlwdGlvbigpIGNvbnN0
CiB7CkBAIC0yODgxLDE3ICsyODAwLDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBw
b3J0c0FSSUFBdHRyaWJ1dGVzKCkgY29uc3QKICAgICAgICAgfHwgaGFzQXR0cmlidXRlKGFyaWFf
cmVsZXZhbnRBdHRyKTsKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGl2ZVJl
Z2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9tU3RyaW5nJiBsaXZlUmVnaW9uU3RhdHVzKQot
ewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsaXZlUmVnaW9uU3Rh
dHVzLCAicG9saXRlIl9zKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsaXZlUmVn
aW9uU3RhdHVzLCAiYXNzZXJ0aXZlIl9zKTsKLX0KLSAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdDo6c3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAotewotICAg
IGF1dG8gbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlID0gbGl2ZVJlZ2lvblN0YXR1cygpOwotICAgIHJl
dHVybiBleGNsdWRlSWZPZmYgPyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKEF0b21TdHJpbmcg
eyBsaXZlUmVnaW9uU3RhdHVzVmFsdWUgfSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1w
dHkoKTsKLX0KLQogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50QWNj
ZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogeyAKICAgICAv
LyBTZW5kIHRoZSBoaXQgdGVzdCBiYWNrIGludG8gdGhlIHN1Yi1mcmFtZSBpZiBuZWNlc3Nhcnku
CkBAIC0zNTIwLDIzICszNDI4LDYgQEAgSW50UmVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3Jv
bGxWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAK
LUFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmNvbnRlbnRzKCkKLXsKLSAgICBpZiAoaXNUYWJMaXN0KCkpCi0gICAgICAgIHJldHVy
biB0YWJDaGlsZHJlbigpOwotCi0gICAgaWYgKGlzU2Nyb2xsVmlldygpKSB7Ci0gICAgICAgIC8v
IEEgc2Nyb2xsIHZpZXcncyBjb250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHNjcm9s
bCBiYXJzLgotICAgICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igbm9uU2Nyb2xsYmFy
Q2hpbGRyZW47Ci0gICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGQg
JiYgIWNoaWxkLT5pc1Njcm9sbGJhcigpKQotICAgICAgICAgICAgICAgIG5vblNjcm9sbGJhckNo
aWxkcmVuLmFwcGVuZChjaGlsZCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5vblNjcm9s
bGJhckNoaWxkcmVuOwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotICAgIAogSW50U2l6ZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxDb250ZW50c1NpemUoKSBjb25zdAogewogICAgIGlm
IChhdXRvIHNjcm9sbGVyID0gc2Nyb2xsYWJsZUFyZWFBbmNlc3RvcigpKQpAQCAtMzYzNCwxMiAr
MzUyNSw2IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmJ1dHRvblJv
bGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkJ1dHRvbjsKIH0K
IAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0J1dHRvbigpIGNvbnN0Ci17Ci0gICAgYXV0
byByb2xlID0gcm9sZVZhbHVlKCk7Ci0gICAgcmV0dXJuIHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkJ1dHRvbiB8fCByb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpQb3BVcEJ1dHRvbiB8fCBy
b2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUb2dnbGVCdXR0b247Ci19Ci0KIGJvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3QKIHsKICAgICByZXR1cm4g
aXM8SFRNTElucHV0RWxlbWVudD4obm9kZSgpKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
Pigqbm9kZSgpKS5pc0ZpbGVVcGxvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDE3ZDllMzUwYWU2Li5mYTYyMzJm
MjA1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC0xMjEsNyArMTIxLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNBWElz
b2xhdGVkT2JqZWN0SW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCBpc1NlY3VyZUZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGlzQ29udGFpbmVkQnlTZWN1cmVGaWVsZCgpIGNvbnN0OwpAQCAtMTMwLDE1
ICsxMjksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzTWVkaWFUaW1lbGluZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzTWVudUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
OTIsOSArMTg1LDggQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogZGlzY2xvc2VkQnlSb3co
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICBib29sIGlzRmllbGRz
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgaXNHcm91cCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0ltYWdlTWFwTGlu
aygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc01lbnVMaXN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZU1hcExpbmsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51TGlzdFBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdE9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzTmF0aXZlU3BpbkJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMDQs
MTEgKzE5Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNJbmNyZW1lbnRvcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzQVJJQVRleHRDb250cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBp
c05vbk5hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0J1dHRv
bigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdDsKICAgICBib29sIGlzTWV0ZXIoKSBj
b25zdDsKICAgICBib29sIGlzU3R5bGVGb3JtYXRHcm91cCgpIGNvbnN0OwpAQCAtMjU5LDcgKzI0
OCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuU2V0TnVtZXJp
Y1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGNhblNl
dFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogCkBAIC0yODcsOCArMjc1LDYgQEAgcHVibGljOgogICAgIGZsb2F0IG1heFZhbHVl
Rm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwLjBmOyB9CiAgICAgZmxvYXQgbWlu
VmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDAuMGY7IH0KICAgICB2aXJ0
dWFsIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3QgeyByZXR1cm4gMC4wZjsgfQotICAg
IEFYQ29yZU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZExpc3RJ
dGVtKCk7CiAgICAgaW50IGxheW91dENvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQogICAgIGRvdWJsZSBsb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAw
OyB9CkBAIC0yOTksNyArMjg1LDYgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBT3du
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0FjdGl2ZURl
c2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzUG9wdXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIFN0cmluZyBwb3B1cFZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0OwogICAgIGJv
b2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNDMwLDcgKzQxNSw2IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmlu
ZyBzdWJyb2xlUGxhdGZvcm1TdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgYXJp
YUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBWE9iamVj
dENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTUyMCw3ICs1MDQs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGVkQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgc2VsZWN0ZWRD
aGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZSB7IH0KICAgICB2
b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4oY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9CkBAIC02MTQsMTQgKzU5NywxMiBAQCBwdWJsaWM6
CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFUcmVlSXRlbUNvbnRlbnQoKSBv
dmVycmlkZTsKIAogICAgIC8vIEFSSUEgbGl2ZS1yZWdpb24gZmVhdHVyZXMuCi0gICAgYm9vbCBz
dXBwb3J0c0xpdmVSZWdpb24oYm9vbCBleGNsdWRlSWZPZmYgPSB0cnVlKSBjb25zdCBvdmVycmlk
ZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXZlUmVnaW9uQW5jZXN0b3IoYm9vbCBleGNs
dWRlSWZPZmYgPSB0cnVlKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5OjpsaXZl
UmVnaW9uQW5jZXN0b3IoKnRoaXMsIGV4Y2x1ZGVJZk9mZik7IH0KICAgICBjb25zdCBTdHJpbmcg
bGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxBdG9tKCk7IH0KICAgICBib29sIGxpdmVSZWdpb25BdG9taWMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNCdXN5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGRlZmF1bHRMaXZlUmVn
aW9uU3RhdHVzRm9yUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSk7Ci0gICAgc3RhdGljIGJvb2wgbGl2
ZVJlZ2lvblN0YXR1c0lzRW5hYmxlZChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgc3RhdGljIGJv
b2wgY29udGVudEVkaXRhYmxlQXR0cmlidXRlSXNFbmFibGVkKEVsZW1lbnQqKTsKICAgICBib29s
IGhhc0NvbnRlbnRFZGl0YWJsZUF0dHJpYnV0ZVNldCgpIGNvbnN0OwogCkBAIC02NDcsNyArNjI4
LDYgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2Nyb2xsQnlQYWdlRGlyZWN0aW9uIHsgVXAs
IERvd24sIExlZnQsIFJpZ2h0IH07CiAgICAgYm9vbCBzY3JvbGxCeVBhZ2UoU2Nyb2xsQnlQYWdl
RGlyZWN0aW9uKSBjb25zdDsKICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0Owot
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50cygpIG92ZXJyaWRlOwogICAg
IEludFNpemUgc2Nyb2xsQ29udGVudHNTaXplKCkgY29uc3Q7CiAgICAgSW50UmVjdCBzY3JvbGxW
aXNpYmxlQ29udGVudFJlY3QoKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUo
Y29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJm
YWNlLmgKaW5kZXggNmMwMGE4NDM0NjU4Li5iMTg3NWJkYzRlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU2ltcGxl
UmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgIlZp
c2libGVTZWxlY3Rpb24uaCIKQEAgLTg1NSw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQWNjZXNzaWJpbGl0eUxpc3RCb3hJbnN0YW5jZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNBWElzb2xhdGVkT2JqZWN0SW5zdGFuY2UoKSBjb25zdCA9IDA7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNIZWFkaW5n
KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkhlYWRp
bmc7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rKCkgY29uc3QgPSAwOwogICAgIGJvb2wgaXND
b2RlKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
ZGU7IH0KICAgICBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U7IH0KQEAgLTg2OSwxNCArODcwLDE0IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTGlzdEJveCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vz
c2liaWxpdHlSb2xlOjpMaXN0Qm94OyB9CiAgICAgdmlydHVhbCBib29sIGlzTGlzdEJveE9wdGlv
bigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRhY2htZW50KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51QnV0dG9uKCkgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNNZW51
UmVsYXRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNNZW51KCkgY29uc3QgeyByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnU7IH0KKyAgICBib29sIGlzTWVudUJhcigp
IGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51QmFy
OyB9CisgICAgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudUJ1dHRvbjsgfQorICAgIGJvb2wgaXNNZW51SXRlbSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGlzU2xpZGVyKCkgY29uc3QgPSAwOworICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U2xpZGVyOyB9CiAgICAg
dmlydHVhbCBib29sIGlzQ29udHJvbCgpIGNvbnN0ID0gMDsKICAgICAvLyBsaXN0cyBzdXBwb3J0
IChsLCB1bCwgb2wsIGRsKQogICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25zdCA9IDA7CkBA
IC05MjUsOSArOTI2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBkaXNj
bG9zZWRCeVJvdygpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxkc2V0KCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBpc0ltYWdlTWFwTGluaygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdCgpIGNvbnN0ID0gMDsKKyAgICBib29sIGlzR3JvdXAoKSBjb25zdDsKIAogICAg
IC8vIE5hdGl2ZSBzcGluIGJ1dHRvbnMuCiAgICAgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCB7
IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3BpbkJ1dHRvbjsgfQpA
QCAtOTM4LDcgKzkzNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0
KCkgY29uc3QgPSAwOwogICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdCB7IHJldHVybiByb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3dpdGNoOyB9CiAgICAgYm9vbCBpc1RvZ2dsZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpU
b2dnbGVCdXR0b247IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udHJvbCgpIGNvbnN0ID0g
MDsKKyAgICBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNO
b25OYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlzVGFiTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0OyB9
CiAgICAgYm9vbCBpc1RhYkl0ZW0oKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6VGFiOyB9CkBAIC05NDgsNyArOTQ3LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNUcmVlR3JpZCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpUcmVlR3JpZDsgfQogICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsgcmV0dXJu
IHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUcmVlSXRlbTsgfQogICAgIGJvb2wg
aXNTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiByb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6U2Nyb2xsQmFyOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQnV0dG9uKCkgY29uc3QgPSAw
OworICAgIGJvb2wgaXNCdXR0b24oKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIEhhc2hNYXA8
U3RyaW5nLCBBWEVkaXRpbmdTdHlsZVZhbHVlVmFyaWFudD4gcmVzb2x2ZWRFZGl0aW5nU3R5bGVz
KCkgY29uc3QgPSAwOwogCkBAIC05NjYsNyArOTY1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNN
b2RlbCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpN
b2RlbDsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMYW5kbWFyaygpIGNvbnN0ID0g
MDsKKyAgICBib29sIGlzTGFuZG1hcmsoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXli
b2FyZEZvY3VzYWJsZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrZWQo
KSBjb25zdCA9IDA7CkBAIC0xMDE0LDcgKzEwMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3QgPSAwOwogICAgIGJvb2wgY2FuU2V0VGV4
dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVl
KCkgY29uc3QgPSAwOworICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gcm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEJhcjsgfQogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0ID0gMDsKICAgICBib29sIGNh
blNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3Q7CkBAIC0xMDMyLDggKzEwMzEsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJhbmdlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZs
b2F0IG1pblZhbHVlRm9yUmFuZ2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBBWENvcmVPYmpl
Y3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKSA9IDA7Ci0gICAgdmlydHVhbCBBWENvcmVPYmplY3Qq
IHNlbGVjdGVkVGFiSXRlbSgpID0gMDsKKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkUmFkaW9C
dXR0b24oKTsKKyAgICBBWENvcmVPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpOwogICAgIHZpcnR1
YWwgaW50IGxheW91dENvdW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIGxvYWRp
bmdQcm9ncmVzcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBicmFpbGxlTGFiZWwo
KSBjb25zdCA9IDA7CkBAIC0xMDYyLDcgKzEwNjEsNyBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIG93bmVycygpIGNvbnN0IHsgcmV0dXJuIHJlbGF0ZWRPYmplY3Rz
KEFYUmVsYXRpb25UeXBlOjpPd25lZEJ5KTsgfQogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIHJlbGF0ZWRPYmplY3RzKEFYUmVsYXRpb25UeXBlKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzUG9wdXAoKSBjb25zdCA9IDA7CisgICAgYm9vbCBoYXNQb3B1
cCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHBvcHVwVmFsdWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSGFzUG9wdXAoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIHByZXNzZWRJc1ByZXNlbnQoKSBjb25zdCA9IDA7CkBAIC0xMTYyLDcgKzExNjEsNyBA
QCBwdWJsaWM6CiAgICAgLy8gTG9jYWxpemVkIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgb2Jq
ZWN0J3Mgcm9sZS4KICAgICB2aXJ0dWFsIFN0cmluZyByb2xlRGVzY3JpcHRpb24oKSBjb25zdCA9
IDA7CiAgICAgLy8gTG9jYWxpemVkIHN0cmluZyB0aGF0IGRlc2NyaWJlcyBBUklBIGxhbmRtYXJr
IHJvbGVzLgotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbigp
IGNvbnN0ID0gMDsKKyAgICBTdHJpbmcgYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkgY29u
c3Q7CiAgICAgLy8gTm9uLWxvY2FsaXplZCBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBvYmpl
Y3QncyBzdWJyb2xlLgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnJvbGVQbGF0Zm9ybVN0cmluZygp
IGNvbnN0ID0gMDsKIApAQCAtMTIzMSw3ICsxMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVk
RnJvbVBhcmVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlU2VsZWN0ZWRDaGls
ZHJlbigpIGNvbnN0ID0gMDsKKyAgICBib29sIGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZENoaWxkcmVuKGNv
bnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpID0gMDsKQEAgLTEz
MDcsNyArMTMwNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhVHJlZUl0ZW1Db250ZW50KCkgPSAwOwogCiAgICAgLy8gQVJJQSBsaXZlLXJl
Z2lvbiBmZWF0dXJlcy4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNMaXZlUmVnaW9uKGJvb2wg
ZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3QgPSAwOworICAgIHN0YXRpYyBib29sIGxpdmVSZWdp
b25TdGF0dXNJc0VuYWJsZWQoY29uc3QgQXRvbVN0cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNM
aXZlUmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBB
WENvcmVPYmplY3QqIGxpdmVSZWdpb25BbmNlc3Rvcihib29sIGV4Y2x1ZGVJZk9mZiA9IHRydWUp
IGNvbnN0ID0gMDsKICAgICBib29sIGlzSW5zaWRlTGl2ZVJlZ2lvbihib29sIGV4Y2x1ZGVJZk9m
ZiA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nIGxpdmVSZWdpb25TdGF0
dXMoKSBjb25zdCA9IDA7CkBAIC0xMzI0LDcgKzEzMjQsNyBAQCBwdWJsaWM6CiAgICAgLy8gU2Ny
b2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFsIGNvb3JkaW5hdGVzIG9m
IHRoZSB0b3AtbGV2ZWwgd2luZG93LgogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb0dsb2JhbFBv
aW50KGNvbnN0IEludFBvaW50JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudHMoKSA9IDA7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGNvbnRlbnRzKCk7CiAKICAgICAvLyBBbGwgbWF0aCBlbGVtZW50cyByZXR1cm4g
dHJ1ZSBmb3IgaXNNYXRoRWxlbWVudCgpLgogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhFbGVtZW50
KCkgY29uc3QgPSAwOwpAQCAtMTQ2Nyw2ICsxNDY3LDEyMyBAQCBpbmxpbmUgYm9vbCBBWENvcmVP
YmplY3Q6OnNob3VsZENvbXB1dGVUaXRsZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3QKIH0KICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKIAoraW5saW5lIGJvb2wgQVhDb3JlT2JqZWN0Ojppc01lbnVS
ZWxhdGVkKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51
QmFyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCdXR0b246CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6TWVudUl0ZW06CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TWVudUl0ZW1DaGVja2JveDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRlbVJh
ZGlvOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6OmlzTWVudUl0ZW0o
KSBjb25zdAoreworICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51SXRlbToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpNZW51SXRl
bVJhZGlvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVJdGVtQ2hlY2tib3g6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6aXNMYW5kbWFyaygpIGNvbnN0
Cit7CisgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6OkxhbmRtYXJrQmFubmVyOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJr
Q29tcGxlbWVudGFyeToKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMYW5kbWFya0NvbnRl
bnRJbmZvOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrRG9jUmVnaW9uOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrTWFpbjoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpMYW5kbWFya05hdmlnYXRpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1h
cmtTZWFyY2g6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6aXNHcm91
cCgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6Okdyb3VwOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRleHRHcm91
cDoKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkdyb3VwOgorICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uVGV4dEdyb3VwOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6OmlzQnV0dG9uKCkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QnV0dG9uOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlBvcFVwQnV0dG9uOgorICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVJvbGU6OlRvZ2dsZUJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgQVhD
b3JlT2JqZWN0Ojppc1RleHRDb250cm9sKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHJvbGVWYWx1
ZSgpKSB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29tYm9Cb3g6CisgICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6U2VhcmNoRmllbGQ6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6VGV4dEFyZWE6CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGV4dEZpZWxkOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitpbmxpbmUgYm9vbCBBWENvcmVPYmplY3Q6OmxpdmVSZWdpb25TdGF0dXNJc0Vu
YWJsZWQoY29uc3QgQXRvbVN0cmluZyYgbGl2ZVJlZ2lvblN0YXR1cykKK3sKKyAgICByZXR1cm4g
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGl2ZVJlZ2lvblN0YXR1cywgInBvbGl0ZSJf
cykgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGl2ZVJlZ2lvblN0YXR1cywgImFz
c2VydGl2ZSJfcyk7Cit9CisKK2lubGluZSBib29sIEFYQ29yZU9iamVjdDo6c3VwcG9ydHNMaXZl
UmVnaW9uKGJvb2wgZXhjbHVkZUlmT2ZmKSBjb25zdAoreworICAgIGF1dG8gbGl2ZVJlZ2lvblN0
YXR1c1ZhbHVlID0gbGl2ZVJlZ2lvblN0YXR1cygpOworICAgIHJldHVybiBleGNsdWRlSWZPZmYg
PyBsaXZlUmVnaW9uU3RhdHVzSXNFbmFibGVkKEF0b21TdHJpbmcgeyBsaXZlUmVnaW9uU3RhdHVz
VmFsdWUgfSkgOiAhbGl2ZVJlZ2lvblN0YXR1c1ZhbHVlLmlzRW1wdHkoKTsKK30KKworaW5saW5l
IGJvb2wgQVhDb3JlT2JqZWN0OjpjYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgeworICAgIC8vIFRoZXNlIHJvbGVzIGFyZSBjb250YWlu
ZXJzIHdob3NlIGNoaWxkcmVuIHN1cHBvcnQgYXJpYS1zZWxlY3RlZDoKKyAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpHcmlkOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RCb3g6
CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdDoKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpUcmVlOgorICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWVHcmlkOgor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3Q6CisgICAgLy8gVGhlc2Ugcm9sZXMgYXJl
IGNvbnRhaW5lcnMgd2hvc2UgY2hpbGRyZW4gYXJlIHRyZWF0ZWQgYXMgc2VsZWN0ZWQgYnkgYXNz
aXN0aXZlCisgICAgLy8gdGVjaG5vbG9naWVzLiBXZSBjYW4gZ2V0IHRoZSAic2VsZWN0ZWQiIGl0
ZW0gdmlhIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBvciB0aGUKKyAgICAvLyBmb2N1c2VkIGVsZW1l
bnQuCisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudToKKyAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51QmFyOgorI2lmIFVTRShBVFNQSSkKKyAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpNZW51TGlzdFBvcHVwOgorI2VuZGlmCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIGlubGluZSBTcGlu
QnV0dG9uVHlwZSBBWENvcmVPYmplY3Q6OnNwaW5CdXR0b25UeXBlKCkKIHsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGlzU3BpbkJ1dHRvbigpLCAic3BpbkJ1dHRvblR5cGUoKSBzaG91bGQgb25s
eSBiZSBjYWxsZWQgb24gc3BpbmJ1dHRvbnMuIik7CkBAIC0xNDkxLDYgKzE2MDgsMjMgQEAgaW5s
aW5lIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYQ29yZU9iamVj
dDo6dGFiQ2hpbGRyZW4oKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2lubGluZSBBWENvcmVP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWENvcmVPYmplY3Q6OmNvbnRlbnRz
KCkKK3sKKyAgICBpZiAoaXNUYWJMaXN0KCkpCisgICAgICAgIHJldHVybiB0YWJDaGlsZHJlbigp
OworCisgICAgaWYgKGlzU2Nyb2xsVmlldygpKSB7CisgICAgICAgIC8vIEEgc2Nyb2xsIHZpZXcn
cyBjb250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHNjcm9sbCBiYXJzLgorICAgICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igbm9uU2Nyb2xsYmFyQ2hpbGRyZW47CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CisgICAgICAgICAgICBp
ZiAoY2hpbGQgJiYgIWNoaWxkLT5pc1Njcm9sbGJhcigpKQorICAgICAgICAgICAgICAgIG5vblNj
cm9sbGJhckNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG5vblNjcm9sbGJhckNoaWxkcmVuOworICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCiBpbmxp
bmUgYm9vbCBBWENvcmVPYmplY3Q6OmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdAog
ewogICAgIHJldHVybiBpc1RleHRDb250cm9sKCk7CkBAIC0xNTU3LDYgKzE2OTEsOTkgQEAgaW5s
aW5lIEFYQ29yZU9iamVjdDo6QVhWYWx1ZSBBWENvcmVPYmplY3Q6OnZhbHVlKCkKICAgICByZXR1
cm4gc3RyaW5nVmFsdWUoKTsKIH0KIAoraW5saW5lIEFYQ29yZU9iamVjdCogQVhDb3JlT2JqZWN0
OjpzZWxlY3RlZFJhZGlvQnV0dG9uKCkKK3sKKyAgICBpZiAoIWlzUmFkaW9Hcm91cCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZpbmQgdGhlIGNoaWxkIHJhZGlvIGJ1dHRv
biB0aGF0IGlzIHNlbGVjdGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgorICAgIGZvciAoY29u
c3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CisgICAgICAgIGlmIChjaGlsZC0+cm9sZVZh
bHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJhZGlvQnV0dG9uICYmIGNoaWxkLT5jaGVja2Jv
eE9yUmFkaW9WYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZTo6T24pCisgICAgICAg
ICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQor
CitpbmxpbmUgQVhDb3JlT2JqZWN0KiBBWENvcmVPYmplY3Q6OnNlbGVjdGVkVGFiSXRlbSgpCit7
CisgICAgaWYgKCFpc1RhYkxpc3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBGSVhNRTogSXMgdGhpcyB2YWxpZD8gQVJJQSB0YWIgaXRlbXMgc3VwcG9ydCBhcmlhLXNlbGVj
dGVkOyBub3QgYXJpYS1jaGVja2VkLgorICAgIC8vIEZpbmQgdGhlIGNoaWxkIHRhYiBpdGVtIHRo
YXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCisgICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5pc1RhYkl0ZW0o
KSAmJiAoY2hpbGQtPmlzQ2hlY2tlZCgpIHx8IGNoaWxkLT5pc1NlbGVjdGVkKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworaW5saW5lIGJvb2wgQVhDb3JlT2JqZWN0OjpoYXNQb3B1cCgpIGNvbnN0Cit7CisgICAgaWYg
KCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb3B1cFZhbHVlKCksICJmYWxzZSJfcykp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IHBhcmVu
dE9iamVjdCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50T2JqZWN0KCkp
IHsKKyAgICAgICAgaWYgKCFhbmNlc3Rvci0+aXNMaW5rKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFuY2VzdG9y
LT5wb3B1cFZhbHVlKCksICJmYWxzZSJfcykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgU3RyaW5nIEFYQ29yZU9iamVjdDo6
YXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHJvbGVW
YWx1ZSgpKSB7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtCYW5uZXI6Cisg
ICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtCYW5uZXIi
X3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29tcGxlbWVudGFyeToK
KyAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFMYW5kbWFya0NvbXBs
ZW1lbnRhcnkiX3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrQ29udGVu
dEluZm86CisgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1h
cmtDb250ZW50SW5mbyJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtN
YWluOgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUxhbmRtYXJr
TWFpbiJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtOYXZpZ2F0aW9u
OgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUxhbmRtYXJrTmF2
aWdhdGlvbiJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtEb2NSZWdp
b246CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGFuZG1hcmtSZWdpb246CisgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBTGFuZG1hcmtSZWdpb24iX3MpOwor
ICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkxhbmRtYXJrU2VhcmNoOgorICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUxhbmRtYXJrU2VhcmNoIl9zKTsKKyAgICBj
YXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbkFsZXJ0OgorICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uQWxlcnQiX3MpOworICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6CisgICAgICAgIHJl
dHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25BbGVydERpYWxvZyJf
cyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25EaWFsb2c6CisgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25EaWFsb2ci
X3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uTG9nOgorICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQUFwcGxpY2F0aW9uTG9nIl9zKTsK
KyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvbk1hcnF1ZWU6CisgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJBUklBQXBwbGljYXRpb25NYXJxdWVlIl9z
KTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpBcHBsaWNhdGlvblN0YXR1czoKKyAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvblN0YXR1cyJf
cyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBwbGljYXRpb25UaW1lcjoKKyAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFBcHBsaWNhdGlvblRpbWVyIl9z
KTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpEb2N1bWVudDoKKyAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFEb2N1bWVudCJfcyk7CisgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6RG9jdW1lbnRBcnRpY2xlOgorICAgICAgICByZXR1cm4gQVhBUklBQ29u
dGVudEdyb3VwVGV4dCgiQVJJQURvY3VtZW50QXJ0aWNsZSJfcyk7CisgICAgY2FzZSBBY2Nlc3Np
YmlsaXR5Um9sZTo6RG9jdW1lbnRNYXRoOgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdy
b3VwVGV4dCgiQVJJQURvY3VtZW50TWF0aCJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9s
ZTo6RG9jdW1lbnROb3RlOgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgi
QVJJQURvY3VtZW50Tm90ZSJfcyk7CisgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VXNlcklu
dGVyZmFjZVRvb2x0aXA6CisgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KCJB
UklBVXNlckludGVyZmFjZVRvb2x0aXAiX3MpOworICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6
OlRhYlBhbmVsOgorICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dCgiQVJJQVRh
YlBhbmVsIl9zKTsKKyAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcHBsaWNhdGlvbjoK
KyAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoIkFSSUFXZWJBcHBsaWNhdGlv
biJfcyk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KK30K
KwogaW5saW5lIHZvaWQgQVhDb3JlT2JqZWN0OjpkZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1l
bnRUeXBlIGRldGFjaG1lbnRUeXBlKQogewogICAgIGRldGFjaFdyYXBwZXIoZGV0YWNobWVudFR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMmJhYWU5YzgyYzk1Li40OGI0MTg1YTJjMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTA3NCwxNSArMTA3NCw2IEBAIEFYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmxpbmtlZE9iamVjCiAgICAgcmV0dXJuIGxpbmtlZE9iamVjdHM7CiB9CiAKLWJvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aGFzUG9wdXAoKSBjb25zdAotewotICAgIC8vIFJldHVybiB0
cnVlIGlmIHRoaXMgaGFzIHRoZSBhcmlhLWhhc3BvcHVwIGF0dHJpYnV0ZSwgb3IgaWYgaXQgaGFz
IGFuIGFuY2VzdG9yIG9mIHR5cGUgbGluayB3aXRoIHRoZSBhcmlhLWhhc3BvcHVwIGF0dHJpYnV0
ZS4KLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFjY2Vzc2liaWxpdHlP
YmplY3Q+KCp0aGlzLCB0cnVlLCBbdGhpc10gKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdCkgewotICAgICAgICByZXR1cm4gKHRoaXMgPT0gJm9iamVjdCkgPyAhZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2Uob2JqZWN0LnBvcHVwVmFsdWUoKSwgImZhbHNlIl9zKQotICAgICAg
ICAgICAgOiBvYmplY3QuaXNMaW5rKCkgJiYgIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG9iamVjdC5wb3B1cFZhbHVlKCksICJmYWxzZSJfcyk7Ci0gICAgfSk7Ci19Ci0KIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNEcm9wcGluZygpIGNvbnN0IAogewogICAg
IHJldHVybiBkZXRlcm1pbmVEcm9wRWZmZWN0cygpLnNpemUoKTsKQEAgLTMxMTYsMjcgKzMxMDcs
NiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyZXIgJiYgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNh
bkhhdmVDaGlsZHJlbigpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNh
bkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgp
KSB7Ci0gICAgLy8gVGhlc2Ugcm9sZXMgYXJlIGNvbnRhaW5lcnMgd2hvc2UgY2hpbGRyZW4gc3Vw
cG9ydCBhcmlhLXNlbGVjdGVkOgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OkdyaWQ6Ci0g
ICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveDoKLSAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpUYWJMaXN0OgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6OlRyZWU6Ci0gICAg
Y2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUdyaWQ6Ci0gICAgY2FzZSBBY2Nlc3NpYmlsaXR5
Um9sZTo6TGlzdDoKLSAgICAvLyBUaGVzZSByb2xlcyBhcmUgY29udGFpbmVycyB3aG9zZSBjaGls
ZHJlbiBhcmUgdHJlYXRlZCBhcyBzZWxlY3RlZCBieSBhc3Npc3RpdmUKLSAgICAvLyB0ZWNobm9s
b2dpZXMuIFdlIGNhbiBnZXQgdGhlICJzZWxlY3RlZCIgaXRlbSB2aWEgYXJpYS1hY3RpdmVkZXNj
ZW5kYW50IG9yIHRoZQotICAgIC8vIGZvY3VzZWQgZWxlbWVudC4KLSAgICBjYXNlIEFjY2Vzc2li
aWxpdHlSb2xlOjpNZW51OgotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Ok1lbnVCYXI6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0gICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFTZWxl
Y3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiB7CiAgICAgLy8g
RGV0ZXJtaW5lIHdoaWNoIHJvd3MgYXJlIHNlbGVjdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCA5
NmM5YTYxNDJiOTIuLjJjNmNkOWNiOWVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTEzNCw3ICsx
MzQsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhbkhhdmVT
ZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZWxlY3RlZENoaWxk
cmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlz
aWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAg
IGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0x
NDcsNyArMTQ2LDYgQEAgcHVibGljOgogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHNlbGVjdGVk
VmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNlbGVj
dGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGlzVmlzaWJsZVBvc2l0aW9uUmFuZ2VJbkRpZmZlcmVudERv
Y3VtZW50KGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Q7Ci0gICAgYm9vbCBoYXNQ
b3B1cCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0Ryb3BwaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0RyYWdnaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5oCmluZGV4IDcyNmM3NmUzMWUxYS4uMWI5MmE5OTk1MTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaApA
QCAtNDQsNyArNDQsNiBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXIoU2Nyb2xsYmFyKik7CiAKICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgTGF5
b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAppbmRleCA2OWY1MzAwNWZm
YzQuLjJjMTQ1ZTM1ZGUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgcHJpdmF0ZToKICAgICBB
WENvcmVPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNsaWRlcjsgfQotICAgIGJv
b2wgaXNTbGlkZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0Nv
bnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgdm9pZCBh
ZGRDaGlsZHJlbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA0
NTBmMTIyNDY5ZDUuLjQ0MTEyZjQ0MzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVjdChjb25z
dCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2JqZWN0LCBBWEkKICAgICAvLyBFdmVyeSBv
YmplY3Qgd2lsbCBoYXZlIGF0IGxlYXN0IHRoaXMgbWFueSBwcm9wZXJ0aWVzLiBXZSBjYW4gc2hy
aW5rIHRoaXMgbnVtYmVyCiAgICAgLy8gdG8gc29tZSBlc3RpbWF0ZWQgYXZlcmFnZSBvbmNlIHdl
IGltcGxlbWVudCBzcGFyc2UgcHJvcGVydHkgc3RvcmFnZSAoaS5lLiBvbmx5IHN0b3JpbmcKICAg
ICAvLyBhIHByb3BlcnR5IGlmIGl0J3Mgbm90IHRoZSBkZWZhdWx0IHZhbHVlIGZvciBpdHMgdHlw
ZSkuCi0gICAgbV9wcm9wZXJ0eU1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDExNik7CisgICAg
bV9wcm9wZXJ0eU1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDk2KTsKIAogICAgIGluaXRpYWxp
emVQcm9wZXJ0aWVzKGF4T2JqZWN0LCBpc1Jvb3QpOwogfQpAQCAtNzEsNyArNzEsNiBAQCBBWElz
b2xhdGVkT2JqZWN0Ojp+QVhJc29sYXRlZE9iamVjdCgpCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhP
YmplY3QsIElzUm9vdCBpc1Jvb3QpCiB7CiAgICAgYXV0byYgb2JqZWN0ID0gYXhPYmplY3QuZ2V0
KCk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFMYW5kbWFya1JvbGVEZXNj
cmlwdGlvbiwgb2JqZWN0LmFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbigpLmlzb2xhdGVkQ29w
eSgpKTsKIAogICAgIGlmIChvYmplY3QuYW5jZXN0b3JGbGFnc0FyZUluaXRpYWxpemVkKCkpCiAg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBbmNlc3RvckZsYWdzLCBvYmplY3Qu
YW5jZXN0b3JGbGFncygpKTsKQEAgLTgwLDM1ICs3OSwyNCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYg
YXhPYgogCiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzQXR0YWNobWVudCwgb2Jq
ZWN0LmlzQXR0YWNobWVudCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNC
dXN5LCBvYmplY3QuaXNCdXN5KCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c0J1dHRvbiwgb2JqZWN0LmlzQnV0dG9uKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc0NvbnRyb2wsIG9iamVjdC5pc0NvbnRyb2woKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OklzRW5hYmxlZCwgb2JqZWN0LmlzRW5hYmxlZCgpKTsKICAgICBzZXRQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNFeHBhbmRlZCwgb2JqZWN0LmlzRXhwYW5kZWQoKSk7CiAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzRm9jdXNlZCwgb2JqZWN0LmlzRm9jdXNl
ZCgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNHcm91cCwgb2JqZWN0Lmlz
R3JvdXAoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzSGVhZGluZywgb2Jq
ZWN0LmlzSGVhZGluZygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNJbmRl
dGVybWluYXRlLCBvYmplY3QuaXNJbmRldGVybWluYXRlKCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc0lubGluZVRleHQsIG9iamVjdC5pc0lubGluZVRleHQoKSk7CiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzSW5wdXRJbWFnZSwgb2JqZWN0LmlzSW5wdXRJ
bWFnZSgpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNMYW5kbWFyaywgb2Jq
ZWN0LmlzTGFuZG1hcmsoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTGlu
aywgb2JqZWN0LmlzTGluaygpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNM
aXN0LCBvYmplY3QuaXNMaXN0KCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJ
c01lbnUsIG9iamVjdC5pc01lbnUoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OklzTWVudUJhciwgb2JqZWN0LmlzTWVudUJhcigpKTsKLSAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SXNNZW51QnV0dG9uLCBvYmplY3QuaXNNZW51QnV0dG9uKCkpOwotICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc01lbnVJdGVtLCBvYmplY3QuaXNNZW51SXRlbSgpKTsK
LSAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNNZW51TGlzdCwgb2JqZWN0LmlzTWVu
dUxpc3QoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzTWVudVJlbGF0ZWQs
IG9iamVjdC5pc01lbnVSZWxhdGVkKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc011bHRpU2VsZWN0YWJsZSwgb2JqZWN0LmlzTXVsdGlTZWxlY3RhYmxlKCkpOwogICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1ByZXNzZWQsIG9iamVjdC5pc1ByZXNzZWQoKSk7
CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzUHJvZ3Jlc3NJbmRpY2F0b3IsIG9i
amVjdC5pc1Byb2dyZXNzSW5kaWNhdG9yKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpJc1JlcXVpcmVkLCBvYmplY3QuaXNSZXF1aXJlZCgpKTsKLSAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6SXNTY3JvbGxiYXIsIG9iamVjdC5pc1Njcm9sbGJhcigpKTsKICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNTZWN1cmVGaWVsZCwgb2JqZWN0LmlzU2VjdXJl
RmllbGQoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzU2VsZWN0ZWQsIG9i
amVjdC5pc1NlbGVjdGVkKCkpOwotICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1Ns
aWRlciwgb2JqZWN0LmlzU2xpZGVyKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpJc1VudmlzaXRlZCwgb2JqZWN0LmlzVW52aXNpdGVkKCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUsIG9iamVjdC5pc1ZhbHVlQXV0
b2ZpbGxBdmFpbGFibGUoKSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNoZSBBWFByb3Bl
cnR5TmFtZTo6SW5zaWRlTGluayBpbnN0ZWFkIG9mIGJvdGggQVhQcm9wZXJ0eU5hbWU6OklzVmlz
aXRlZCBhbmQgQVhQcm9wZXJ0eU5hbWU6OklzVW52aXNpdGVkLgogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc1Zpc2l0ZWQsIG9iamVjdC5pc1Zpc2l0ZWQoKSk7CiAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJvbGVEZXNjcmlwdGlvbiwgb2JqZWN0LnJvbGVEZXNjcmlw
dGlvbigpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
Um9sZVBsYXRmb3JtU3RyaW5nLCBvYmplY3Qucm9sZVBsYXRmb3JtU3RyaW5nKCkuaXNvbGF0ZWRD
b3B5KCkpOwpAQCAtMTE5LDcgKzEwNyw2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRhdGV0aW1lQXR0cmlidXRlVmFsdWUsIG9iamVj
dC5kYXRldGltZUF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXRGb2N1c0F0dHJpYnV0ZSwgb2JqZWN0LmNhblNldEZv
Y3VzQXR0cmlidXRlKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXRW
YWx1ZUF0dHJpYnV0ZSwgb2JqZWN0LmNhblNldFZhbHVlQXR0cmlidXRlKCkpOwotICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXROdW1lcmljVmFsdWUsIG9iamVjdC5jYW5TZXRO
dW1lcmljVmFsdWUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRz
UmVxdWlyZWRBdHRyaWJ1dGUsIG9iamVjdC5zdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkpOwog
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSwg
b2JqZWN0LmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkpOwogICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpDYW5TZXRTZWxlY3RlZENoaWxkcmVuLCBvYmplY3QuY2FuU2V0U2VsZWN0ZWRD
aGlsZHJlbigpKTsKQEAgLTEyOSwxMCArMTE2LDcgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojpp
bml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmFsdWVGb3JSYW5nZSwgb2JqZWN0LnZh
bHVlRm9yUmFuZ2UoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok1heFZhbHVl
Rm9yUmFuZ2UsIG9iamVjdC5tYXhWYWx1ZUZvclJhbmdlKCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdlLCBvYmplY3QubWluVmFsdWVGb3JSYW5nZSgp
KTsKLSAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRSYWRpb0J1
dHRvbiwgb2JqZWN0LnNlbGVjdGVkUmFkaW9CdXR0b24oKSk7Ci0gICAgc2V0T2JqZWN0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSwgb2JqZWN0LnNlbGVjdGVkVGFiSXRl
bSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNBUklBT3ducywg
b2JqZWN0LnN1cHBvcnRzQVJJQU93bnMoKSk7Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6Okhhc1BvcHVwLCBvYmplY3QuaGFzUG9wdXAoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OlBvcHVwVmFsdWUsIG9iamVjdC5wb3B1cFZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkp
OwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBSXNNdWx0aWxpbmUsIG9iamVj
dC5hcmlhSXNNdWx0aWxpbmUoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklu
dmFsaWRTdGF0dXMsIG9iamVjdC5pbnZhbGlkU3RhdHVzKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAt
MTcyLDcgKzE1Niw2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6Ok9yaWVudGF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KG9iamVjdC5vcmll
bnRhdGlvbigpKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkhpZXJhcmNoaWNh
bExldmVsLCBvYmplY3QuaGllcmFyY2hpY2FsTGV2ZWwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6Okxhbmd1YWdlLCBvYmplY3QubGFuZ3VhZ2UoKS5pc29sYXRlZENvcHkoKSk7
Ci0gICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzTGl2ZVJlZ2lvbiwgb2Jq
ZWN0LnN1cHBvcnRzTGl2ZVJlZ2lvbigpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6TGl2ZVJlZ2lvblN0YXR1cywgb2JqZWN0LmxpdmVSZWdpb25TdGF0dXMoKS5pc29sYXRlZENv
cHkoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpdmVSZWdpb25SZWxldmFu
dCwgb2JqZWN0LmxpdmVSZWdpb25SZWxldmFudCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6TGl2ZVJlZ2lvbkF0b21pYywgb2JqZWN0LmxpdmVSZWdp
b25BdG9taWMoKSk7CkBAIC0yNDUsMTcgKzIyOCwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhP
YgogICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVRy
ZWVSb3dzLCBhcmlhVHJlZVJvd3MpOwogICAgIH0KIAotICAgIGlmIChvYmplY3QuaXNUZXh0Q29u
dHJvbCgpKQotICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNUZXh0Q29udHJv
bCwgdHJ1ZSk7Ci0KICAgICBpZiAob2JqZWN0LmlzUmFkaW9CdXR0b24oKSkgewogICAgICAgICBp
ZiAoYXV0byBuYW1lQXR0cmlidXRlID0gb2JqZWN0LmF0dHJpYnV0ZVZhbHVlKCJuYW1lIl9zKSkK
ICAgICAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpOYW1lQXR0cmlidXRlLCBu
YW1lQXR0cmlidXRlLT5pc29sYXRlZENvcHkoKSk7CiAgICAgfQogCiAgICAgaWYgKG9iamVjdC5j
YW5IYXZlU2VsZWN0ZWRDaGlsZHJlbigpKSB7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpDYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbiwgdHJ1ZSk7Ci0KICAgICAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47CiAgICAgICAgIG9iamVjdC5z
ZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOwogICAgICAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2VsZWN0ZWRDaGlsZHJlbiwgc2VsZWN0ZWRDaGls
ZHJlbik7CkBAIC0yNjQsMTQgKzI0MiwxMyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgogICAg
IGlmIChvYmplY3QuaXNJbWFnZSgpKQogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uLCBvYmplY3QuZW1iZWRkZWRJbWFnZURlc2NyaXB0
aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogCi0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkNvbnRlbnRzLCBvYmplY3QuY29udGVudHMoKSk7Ci0KICAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgdmlzaWJsZUNoaWxkcmVuOwogICAgIG9iamVjdC52aXNpYmxl
Q2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuKTsKICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6VmlzaWJsZUNoaWxkcmVuLCB2aXNpYmxlQ2hpbGRyZW4pOwogICAgIHNl
dE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaW5rZWRPYmplY3RzLCBvYmpl
Y3QubGlua2VkT2JqZWN0cygpKTsKIAogICAgIGlmIChvYmplY3QuaXNTcGluQnV0dG9uKCkpIHsK
KyAgICAgICAgLy8gRklYTUU6IFRoZXNlIHByb3BlcnRpZXMgZ2V0IG91dCBvZiBkYXRlIGV2ZXJ5
IHRpbWUgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OntjbGVhckNoaWxkcmVuLCBhZGRDaGlsZHJl
bn0gaXMgY2FsbGVkLiBXZSBzaG91bGQgcHJvYmFibHkganVzdCBub3QgY2FjaGUgdGhlc2UgcHJv
cGVydGllcy4KICAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRlY3Jl
bWVudEJ1dHRvbiwgb2JqZWN0LmRlY3JlbWVudEJ1dHRvbigpKTsKICAgICAgICAgc2V0T2JqZWN0
UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkluY3JlbWVudEJ1dHRvbiwgb2JqZWN0LmluY3JlbWVu
dEJ1dHRvbigpKTsKICAgICB9CkBAIC00NjcsMTMgKzQ0NCw2IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6c2V0U2VsZWN0ZWRDaGlsZHJlbihjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHNlCiAgICAgfSk7CiB9CiAKLUFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRlbnRzKCkKLXsKLSAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgcmVzdWx0OwotICAgIGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpDb250ZW50cywgcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCiBib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRGcm9tUGFyZW50KCkKIHsKICAg
ICBpZiAocGFyZW50KCkuaXNWYWxpZCgpKQpAQCAtMTQ0MywxMiArMTQxMyw2IEBAIGJvb2wgQVhJ
c29sYXRlZE9iamVjdDo6aXNMaXN0Qm94T3B0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNJbWFnZU1hcExpbmsoKSBjb25zdAotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc01vY2tPYmplY3QoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDVmZjY5OGQzYjVmMC4uOWM4
MWI3NWM0ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC01Niw4ICs1Niw2IEBAIHB1
YmxpYzoKICAgICBBWElzb2xhdGVkT2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsgfQogICAgIEFYSXNvbGF0ZWRPYmpl
Y3QqIGVkaXRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpl
ZGl0YWJsZUFuY2VzdG9yKCp0aGlzKTsgfTsKICAgICBib29sIGNhblNldEZvY3VzQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpDYW5TZXRGb2N1c0F0dHJpYnV0ZSk7IH0KLSAgICBib29sIGlzVGV4dENvbnRyb2woKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzVGV4dENvbnRyb2wpOyB9Ci0gICAgYm9vbCBzdXBwb3J0c0xpdmVSZWdpb24oYm9vbCA9IHRy
dWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6U3VwcG9ydHNMaXZlUmVnaW9uKTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGV0YWNo
UmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKSBvdmVycmlkZTsKQEAgLTEx
NywxOSArMTE1LDExIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgLy8gQXR0cmlidXRlIHJldHJp
ZXZhbCBvdmVycmlkZXMuCi0gICAgYm9vbCBpc0hlYWRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzSGVhZGluZyk7IH0KLSAg
ICBib29sIGlzTGFuZG1hcmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzTGFuZG1hcmspOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OklzTGluayk7IH0KICAgICBib29sIGlzU2VjdXJlRmllbGQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2VjdXJlRmllbGQpOyB9
CiAgICAgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQXR0YWNobWVudCk7IH0KLSAgICBib29sIGlz
TWVudVJlbGF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzTWVudVJlbGF0ZWQpOyB9Ci0gICAgYm9vbCBpc01lbnUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
TWVudSk7IH0KLSAgICBib29sIGlzTWVudUJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNNZW51QmFyKTsgfQotICAgIGJvb2wg
aXNNZW51QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc01lbnVCdXR0b24pOyB9Ci0gICAgYm9vbCBpc01lbnVJdGVtKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpJc01lbnVJdGVtKTsgfQogICAgIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0lucHV0SW1hZ2Up
OyB9CiAgICAgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Byb2dyZXNzSW5kaWNhdG9y
KTsgfQotICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzU2xpZGVyKTsgfQogICAgIGJvb2wgaXNDb250
cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0NvbnRyb2wpOyB9CiAKICAgICBib29sIGlzTGlzdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNMaXN0KTsgfQpA
QCAtMTc3LDkgKzE2Nyw2IEBAIHByaXZhdGU6CiAgICAgQVhDb3JlT2JqZWN0KiBkaXNjbG9zZWRC
eVJvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpEaXNjbG9zZWRCeVJvdyk7IH0KIAogICAgIGJvb2wgaXNGaWVsZHNldCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
SXNGaWVsZHNldCk7IH0KLSAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzR3JvdXApOyB9Ci0gICAgYm9v
bCBpc01lbnVMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc01lbnVMaXN0KTsgfQotICAgIGJvb2wgaXNCdXR0b24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
QnV0dG9uKTsgfQogICAgIGJvb2wgaXNDaGVja2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Ym9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQpOyB9CiAgICAgYm9v
bCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCk7IH0KICAgICBib29sIGlzU2VsZWN0ZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
U2VsZWN0ZWQpOyB9CkBAIC0xOTMsNyArMTgwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBv
cnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUpOyB9CiAg
ICAgU3RyaW5nIGRhdGV0aW1lQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBzdHJpbmdBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6RGF0ZXRpbWVBdHRyaWJ1dGVW
YWx1ZSk7IH0KICAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5TZXRWYWx1ZUF0
dHJpYnV0ZSk7IH0KLSAgICBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q2FuU2V0TnVtZXJp
Y1ZhbHVlKTsgfQogICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNhblNldFNl
bGVjdGVkQXR0cmlidXRlKTsgfQogICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRDaGlsZHJlbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6
Q2FuU2V0U2VsZWN0ZWRDaGlsZHJlbik7IH0KICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgY3JlYXRl
IGFuIGlzb2xhdGVkIG9iamVjdCBmcm9tIGFuIGlnbm9yZWQgbGl2ZSBvYmplY3QsIHNvIHdlIGNh
biBoYXJkY29kZSB0aGlzIHRvIGZhbHNlLgpAQCAtMjA1LDEyICsxOTEsOSBAQCBwcml2YXRlOgog
ICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpWYWx1ZUZvclJhbmdlKTsgfQogICAgIGZsb2F0
IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpNYXhWYWx1ZUZvclJhbmdlKTsgfQogICAgIGZsb2F0IG1p
blZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9hdEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpNaW5WYWx1ZUZvclJhbmdlKTsgfQotICAgIEFYQ29yZU9iamVj
dCogc2VsZWN0ZWRSYWRpb0J1dHRvbigpIG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTZWxlY3RlZFJhZGlvQnV0dG9uKTsgfQotICAgIEFYQ29y
ZU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlNlbGVjdGVkVGFiSXRlbSk7IH0KICAgICBpbnQgbGF5
b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5sb2FkaW5nUHJvZ3Jlc3MoKTsgfQogICAg
IGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNBUklBT3ducyk7IH0KLSAgICBib29s
IGhhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFY
UHJvcGVydHlOYW1lOjpIYXNQb3B1cCk7IH0KICAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQ
b3B1cFZhbHVlKTsgfQogICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgYXJpYUlzTXVsdGlsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9v
bEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBUklBSXNNdWx0aWxpbmUpOyB9CkBAIC0y
NDcsNyArMjMwLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcm9sZVBsYXRmb3JtU3RyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlJvbGVQbGF0Zm9ybVN0cmluZyk7IH0KICAgICBTdHJpbmcgcm9sZURlc2NyaXB0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5h
bWU6OlJvbGVEZXNjcmlwdGlvbik7IH0KICAgICBTdHJpbmcgc3Vicm9sZVBsYXRmb3JtU3RyaW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OlN1YnJvbGVQbGF0Zm9ybVN0cmluZyk7IH0KLSAgICBTdHJpbmcgYXJpYUxhbmRtYXJr
Um9sZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFSSUFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbik7IH0KICAg
ICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UG9pbnQg
Y2xpY2tQb2ludCgpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9y
PEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMzA4LDExICsy
OTAsOSBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbj4oaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Ok9yaWVudGF0aW9uKSk7
IH0KICAgICB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHVuc2lnbmVkQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkhpZXJhcmNoaWNhbExl
dmVsKTsgfQogICAgIFN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpMYW5ndWFnZSk7IH0KLSAgICBib29s
IGNhbkhhdmVTZWxlY3RlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDYW5IYXZlU2VsZWN0ZWRDaGlsZHJlbik7IH0K
ICAgICB2b2lkIHNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6U2VsZWN0ZWRDaGlsZHJlbiwgY2hpbGRyZW4pOyB9CiAgICAgdm9pZCBzZXRTZWxl
Y3RlZENoaWxkcmVuKGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4pIG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OlZpc2libGVDaGlsZHJlbiwgY2hpbGRyZW4pOyB9Ci0gICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAgICAgQXRvbVN0cmluZyB0YWdO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBjaGlsZHJlbihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSBvdmVycmlk
ZTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKQEAgLTQ0
NCw3ICs0MjQsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c01vY2tPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTm9uTmF0aXZlVGV4dENv
bnRyb2woKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNJ
bmRldGVybWluYXRlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggZjRjMTllNjQ3YzJkLi5k
YzM0Y2IzOWE3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNTIsNyArNTIsNiBAQCBlbnVt
IGNsYXNzIEFYU3RyZWFtT3B0aW9ucyA6IHVpbnQ4X3Q7CiAKIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgQVJJQUlzTXVsdGlsaW5lLAotICAgIEFSSUFMYW5kbWFy
a1JvbGVEZXNjcmlwdGlvbiwKICAgICBBUklBVHJlZUl0ZW1Db250ZW50LAogICAgIEFSSUFUcmVl
Um93cywKICAgICBBdHRyaWJ1dGVkVGV4dCwKQEAgLTY5LDkgKzY4LDcgQEAgZW51bSBjbGFzcyBB
WFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBCcmFpbGxlTGFiZWwsCiAgICAgQnJhaWxs
ZVJvbGVEZXNjcmlwdGlvbiwKICAgICBCdXR0b25TdGF0ZSwKLSAgICBDYW5IYXZlU2VsZWN0ZWRD
aGlsZHJlbiwKICAgICBDYW5TZXRGb2N1c0F0dHJpYnV0ZSwKLSAgICBDYW5TZXROdW1lcmljVmFs
dWUsCiAgICAgQ2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUsCiAgICAgQ2FuU2V0U2VsZWN0ZWRDaGls
ZHJlbiwKICAgICBDYW5TZXRWYWx1ZUF0dHJpYnV0ZSwKQEAgLTg2LDcgKzgzLDYgQEAgZW51bSBj
bGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBDb2x1bW5IZWFkZXJzLAogICAg
IENvbHVtbkluZGV4LAogICAgIENvbHVtbkluZGV4UmFuZ2UsCi0gICAgQ29udGVudHMsCiAgICAg
Q3VycmVudFN0YXRlLAogICAgIERhdGV0aW1lQXR0cmlidXRlVmFsdWUsCiAgICAgRGVjcmVtZW50
QnV0dG9uLApAQCAtMTA0LDcgKzEwMCw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1
aW50MTZfdCB7CiAgICAgSGFzSGlnaGxpZ2h0aW5nLAogICAgIEhhc0l0YWxpY0ZvbnQsCiAgICAg
SGFzUGxhaW5UZXh0LAotICAgIEhhc1BvcHVwLAogICAgIEhhc1VuZGVybGluZSwKICAgICBIZWFk
ZXJDb250YWluZXIsCiAgICAgSGVhZGluZ0xldmVsLApAQCAtMTE4LDcgKzExMyw2IEBAIGVudW0g
Y2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNHcmFiYmVkLAogICAgIElz
QVJJQVRyZWVHcmlkUm93LAogICAgIElzQXR0YWNobWVudCwKLSAgICBJc0J1dHRvbiwKICAgICBJ
c0J1c3ksCiAgICAgSXNDaGVja2VkLAogICAgIElzQ29udHJvbCwKQEAgLTEyNywxMyArMTIxLDEw
IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNFeHBvc2Fi
bGUsCiAgICAgSXNGaWVsZHNldCwKICAgICBJc0ZvY3VzZWQsCi0gICAgSXNHcm91cCwKICAgICBJ
c0luZGV0ZXJtaW5hdGUsCiAgICAgSXNJbmxpbmVUZXh0LAogICAgIElzSW5wdXRJbWFnZSwKLSAg
ICBJc0hlYWRpbmcsCiAgICAgSXNLZXlib2FyZEZvY3VzYWJsZSwKLSAgICBJc0xhbmRtYXJrLAog
ICAgIElzTGluaywKICAgICBJc0xpc3QsCiAgICAgSXNMaXN0Qm94LApAQCAtMTUwLDI2ICsxNDEs
MTcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc01hdGhU
YWJsZUNlbGwsCiAgICAgSXNNYXRoTXVsdGlzY3JpcHQsCiAgICAgSXNNYXRoVG9rZW4sCi0gICAg
SXNNZW51LAotICAgIElzTWVudUJhciwKLSAgICBJc01lbnVCdXR0b24sCi0gICAgSXNNZW51SXRl
bSwKLSAgICBJc01lbnVMaXN0LAotICAgIElzTWVudVJlbGF0ZWQsCiAgICAgSXNNdWx0aVNlbGVj
dGFibGUsCiAgICAgSXNQcmVzc2VkLAogICAgIElzUHJvZ3Jlc3NJbmRpY2F0b3IsCiAgICAgSXNS
ZXF1aXJlZCwKLSAgICBJc1Njcm9sbGJhciwKICAgICBJc1NlY3VyZUZpZWxkLAogICAgIElzU2Vs
ZWN0ZWQsCiAgICAgSXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSwKLSAgICBJc1NsaWRlciwKICAgICBJ
c1RhYmxlLAogICAgIElzVGFibGVDZWxsLAogICAgIElzVGFibGVDb2x1bW4sCiAgICAgSXNUYWJs
ZVJvdywKLSAgICBJc1RleHRDb250cm9sLAogICAgIElzVHJlZSwKICAgICBJc1RyZWVJdGVtLAog
ICAgIElzVW52aXNpdGVkLApAQCAtMjE4LDggKzIwMCw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgUm93SW5kZXgsCiAgICAgUm93SW5kZXhSYW5nZSwKICAg
ICBTZWxlY3RlZENoaWxkcmVuLAotICAgIFNlbGVjdGVkUmFkaW9CdXR0b24sCi0gICAgU2VsZWN0
ZWRUYWJJdGVtLAogICAgIFNlc3Npb25JRCwKICAgICBTZXRTaXplLAogICAgIFNvcnREaXJlY3Rp
b24sCkBAIC0yMzUsNyArMjE1LDYgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQx
Nl90IHsKICAgICBTdXBwb3J0c0V4cGFuZGVkLAogICAgIFN1cHBvcnRzRXhwYW5kZWRUZXh0VmFs
dWUsCiAgICAgU3VwcG9ydHNLZXlTaG9ydGN1dHMsCi0gICAgU3VwcG9ydHNMaXZlUmVnaW9uLAog
ICAgIFN1cHBvcnRzUGF0aCwKICAgICBTdXBwb3J0c1Bvc0luU2V0LAogICAgIFN1cHBvcnRzUHJl
c3NBY3Rpb24sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>