<?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>208274</bug_id>
          
          <creation_ts>2020-02-26 16:00:06 -0800</creation_ts>
          <short_desc>_WKUserContentWorld should be a wrapper around WKContentWorld</short_desc>
          <delta_ts>2020-02-26 20:36:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623243</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 16:00:06 -0800</bug_when>
    <thetext>_WKUserContentWorld should be a wrapper around WKContentWorld</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623247</commentid>
    <comment_count>1</comment_count>
      <attachid>391796</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 16:03:50 -0800</bug_when>
    <thetext>Created attachment 391796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623251</commentid>
    <comment_count>2</comment_count>
      <attachid>391799</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 16:10:29 -0800</bug_when>
    <thetext>Created attachment 391799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623270</commentid>
    <comment_count>3</comment_count>
      <attachid>391807</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 16:39:02 -0800</bug_when>
    <thetext>Created attachment 391807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623271</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-02-26 16:40:20 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623276</commentid>
    <comment_count>5</comment_count>
      <attachid>391810</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 16:49:52 -0800</bug_when>
    <thetext>Created attachment 391810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623289</commentid>
    <comment_count>6</comment_count>
      <attachid>391814</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 17:06:08 -0800</bug_when>
    <thetext>Created attachment 391814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623350</commentid>
    <comment_count>7</comment_count>
      <attachid>391814</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-02-26 20:29:10 -0800</bug_when>
    <thetext>Comment on attachment 391814
Patch

What a fun change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623353</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-26 20:35:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/r257552</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623354</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-26 20:36:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59834215&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391796</attachid>
            <date>2020-02-26 16:03:50 -0800</date>
            <delta_ts>2020-02-26 16:10:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208274-20200226160349.patch</filename>
            <type>text/plain</type>
            <size>77346</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0wMi0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIF9XS1VzZXJDb250
ZW50V29ybGQgc2hvdWxkIGJlIGEgd3JhcHBlciBhcm91bmQgV0tDb250ZW50V29ybGQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgU1BJcyB3
ZXJlIGdldHRpbmcgY29uZnVzZWQgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBVcGRhdGVkIEFQ
SSB0ZXN0cyB3aGljaCBleHBlY3RlZCBwb2ludGVyIGVxdWFsaXR5LCB3aGljaCBpcyBubyBsb25n
ZXIgdHJ1ZSBvciBpbXBvcnRhbnQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6Q29udGVu
dFdvcmxkQmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
V29ybGQuaDoKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6aWRlbnRpZmllciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZEJhc2U6Om5hbWUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjp3b3JsZERhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjpDb250ZW50V29y
bGRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRXb3JsZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6VXNl
clN0eWxlU2hlZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAo
V0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVz
ZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
OgorICAgICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
V29ybGQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2VyU2NyaXB0
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNl
ckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX2Fk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVn
YWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50V29ybGQgX2luaXRXaXRoTmFtZTpdKToKKyAgICAgICAgKC1bX1dLVXNl
ckNvbnRlbnRXb3JsZCBfaW5pdF0pOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudFdvcmxkIF9p
bml0V2l0aENvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKCtbX1dLVXNlckNvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdv
cmxkXSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50V29ybGQgbmFtZV0pOgorICAgICAgICAo
LVtfV0tVc2VyQ29udGVudFdvcmxkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRXb3JsZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVT
aGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dL
VXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0
ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6Ondvcmxk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUNvbnRlbnRXb3JsZFVzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJDb250ZW50V29ybGRVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29u
dGVudFdvcmxkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlckNvbnRlbnRXb3JsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9wcm9jZXNzRGlzcGxheU5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCk6CisKIDIwMjAtMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEFsbG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nl
c3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjU3MzY5KQorKysgU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw2IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW8KIFVJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAotVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKLSAgICAgICAgVXNlckNvbnRlbnRXb3JsZCwKICAg
ICAgICAgVXNlckluaXRpYXRlZEFjdGlvbiwKICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLAogICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUx
LDEyICszNTEsNiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwCiAg
ICAgICAgIHdyYXBwZXIgPSBbV0tDb250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgVHlwZTo6VXNlckNvbnRlbnRXb3JsZDoKLSAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVu
dFdvcmxkIGFsbG9jXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBUeXBlOjpVc2VySW5pdGlhdGVkQWN0aW9uOgog
ICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJJbml0aWF0ZWRBY3Rpb24gYWxsb2NdOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29y
bGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAK
LSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxk
U2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCi1Db250ZW50V29ybGRCYXNlOjpDb250
ZW50V29ybGRCYXNlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorQ29udGVudFdvcmxkOjpDb250
ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCiAgICAgOiBtX25hbWUobmFtZSkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKQEAgLTc2LDIxICs3NSw2IEBAIENvbnRl
bnRXb3JsZCYgQ29udGVudFdvcmxkOjpkZWZhdWx0Q2xpZW4KICAgICByZXR1cm4gKndvcmxkLmdl
dCgpOwogfQogCi1Db250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2UobmFtZSkKLXsKLX0KLQotQ29udGVudFdvcmxk
OjpDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKGlkZW50aWZpZXIpCi17Ci19Ci0KLUNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKHVzZXJDb250ZW50V29ybGQuaWRlbnRpZmllcigpLCB1
c2VyQ29udGVudFdvcmxkLm5hbWUoKSkKLXsKLX0KLQogQ29udGVudFdvcmxkOjp+Q29udGVudFdv
cmxkKCkKIHsKICAgICBpZiAobmFtZSgpLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaAkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwzMiArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgVXNlckNv
bnRlbnRXb3JsZDsKLQotY2xhc3MgQ29udGVudFdvcmxkQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+Q29udGVudFdvcmxkQmFzZSgpID0gZGVmYXVsdDsKLQotICAgIFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KLSAgICBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBXVEY6OlN0
cmluZz4gd29ybGREYXRhKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIENvbnRlbnRXb3JsZEJhc2Uo
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgfQotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpDb250ZW50V29y
bGRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbmFtZShuYW1lKSB7IH0K
LXByaXZhdGU6Ci0gICAgV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKLSAgICBXVEY6OlN0cmluZyBtX25hbWU7Ci19OwotCi1jbGFzcyBDb250ZW50V29ybGQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29y
bGQ+LCBwdWJsaWMgQ29udGVudFdvcmxkQmFzZSB7CitjbGFzcyBDb250ZW50V29ybGQgZmluYWwg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbnRlbnRXb3JsZD4gc2hhcmVkV29ybGRXaXRo
TmFtZShjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBDb250ZW50V29ybGQmIHBhZ2VD
b250ZW50V29ybGQoKTsKQEAgLTY0LDEzICszOSwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5Db250ZW50V29ybGQoKTsKIAotICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBPYmplY3RJ
bXBsOjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IE9iamVjdEltcGw6
OmRlcmVmKCk7IH0KKyAgICBXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgc3RkOjpwYWlyPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IENvbnRl
bnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIpOwotICAgIGV4cGxpY2l0IENv
bnRlbnRXb3JsZChjb25zdCBVc2VyQ29udGVudFdvcmxkJik7CisgICAgZXhwbGljaXQgQ29udGVu
dFdvcmxkKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KKworICAgIFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV1RGOjpTdHJpbmcgbV9uYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRX
b3JsZFNoYXJlZC5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLQotUmVmPFVzZXJDb250ZW50V29ybGQ+
IFVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRXb3JsZChuYW1lKSk7Ci19
Ci0KLVJlZjxVc2VyQ29udGVudFdvcmxkPiBVc2VyQ29udGVudFdvcmxkOjpmcm9tQ29udGVudFdv
cmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxkKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVzZXJDb250ZW50V29ybGQoY29udGVudFdvcmxkKSk7Ci19Ci0KLVVzZXJDb250
ZW50V29ybGQmIFVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkKLXsKLSAgICBzdGF0aWMg
VXNlckNvbnRlbnRXb3JsZCogd29ybGQgPSBuZXcgVXNlckNvbnRlbnRXb3JsZChGb3JOb3JtYWxX
b3JsZE9ubHk6Ok5vcm1hbFdvcmxkKTsKLSAgICByZXR1cm4gKndvcmxkOwotfQotCi1Vc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAg
IDogQ29udGVudFdvcmxkQmFzZShuYW1lKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjpVc2Vy
Q29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2Uo
V2ViS2l0OjpwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQotewotfQotCi1Vc2VyQ29udGVu
dFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxk
KQotICAgIDogQ29udGVudFdvcmxkQmFzZShjb250ZW50V29ybGQuaWRlbnRpZmllcigpLCBjb250
ZW50V29ybGQubmFtZSgpKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjp+VXNlckNvbnRlbnRX
b3JsZCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBVc2VyQ29udGVudFdvcmxkIGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRl
bnRXb3JsZD4sIHB1YmxpYyBDb250ZW50V29ybGRCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmKTsK
LSAgICBzdGF0aWMgVXNlckNvbnRlbnRXb3JsZCYgbm9ybWFsV29ybGQoKTsKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IGZyb21Db250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxk
Jik7Ci0KLSAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudFdvcmxkKCk7Ci0KLSAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgT2JqZWN0SW1wbDo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBPYmplY3RJbXBsOjpkZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgVXNlckNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IFVz
ZXJDb250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxkJik7Ci0KLSAgICBlbnVtIGNsYXNzIEZv
ck5vcm1hbFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07Ci0gICAgZXhwbGljaXQgVXNlckNvbnRl
bnRXb3JsZChGb3JOb3JtYWxXb3JsZE9ubHkpOwotCi19OwotCi19IC8vIG5hbWVzcGFjZSBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAJ
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDEwIEBAIFdURjo6VVJMIFVz
ZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKICAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJp
bmcoInVzZXItc2NyaXB0OiIsICsraWRlbnRpZmllcikgfTsKIH0KIAotVXNlclNjcmlwdDo6VXNl
clNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCitVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91c2VyU2NyaXB0
KHVzZXJTY3JpcHQpCiAgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCi0KIH0gLy8gbmFtZXNw
YWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclNjcmlwdC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2LDIxICsz
NiwyMSBAQCBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6
CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGljIFJlZjxVc2VyU2NyaXB0PiBj
cmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYg
d29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdU
Rk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAgICAgfQogCi0gICAgVXNlclNjcmlwdChXZWJD
b3JlOjpVc2VyU2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBVc2VyU2NyaXB0
KFdlYkNvcmU6OlVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0OyB9CiAgICAgCi0gICAgVXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgpIHsg
cmV0dXJuIG1fd29ybGQ7IH0KLSAgICBjb25zdCBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVu
dFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIENvbnRlbnRXb3JsZCYgY29u
dGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIGNvbnN0IENvbnRlbnRXb3JsZCYg
Y29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IG1fdXNlclNjcmlwdDsKLSAgICBSZWY8VXNlckNvbnRl
bnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgV1RGOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VQogICAgIHJldHVybiB7IHsgfSwgbWFrZVN0cmluZygidXNlci1zdHlsZS1zaGVldDoiLCArK2lk
ZW50aWZpZXIpIH07CiB9CiAKLVVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKK1VzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91
c2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2
LDIxICszNiwyMSBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplCiBw
dWJsaWM6CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
dXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGlj
IFJlZjxVc2VyU3R5bGVTaGVldD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJT
dHlsZVNoZWV0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5bGVTaGVldChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSwg
d29ybGQpKTsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CiAKLSAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxk
KCkgeyByZXR1cm4gbV93b3JsZDsgfQotICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJD
b250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgQ29udGVudFdvcmxk
JiBjb250ZW50V29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgY29uc3QgQ29udGVudFdv
cmxkJiBjb250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgbV91c2VyU3R5bGVTaGVldDsKLSAgICBSZWY8
VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29u
dGVudFJ1bGVMaXN0LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1
ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oIgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxl
U2hlZXQoV0tQYWdlCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQ
YXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJucyk7CiAKLSAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQgPSBB
UEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3Vy
Y2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6ICBVUkwoVVJM
KCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3Rv
cigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+
IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJs
YW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRl
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJs
YWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHRv
SW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQ
YWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRv
SW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNl
clNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdU
Rk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVj
dG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmpl
Y3RlZEZyYW1lcykgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAg
ICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYg
V0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25s
eSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVz
ZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNl
UmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVc2VyU2NyaXB0Q29weVNvdXJjZShXS1VzZXJTY3JpcHRSZWYg
dXNlclNjcmlwdFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKF9XS1VzZXJDb250ZW50V29ybGQgKilfdXNl
ckNvbnRlbnRXb3JsZAogewotICAgIHJldHVybiBbW3dyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpmcm9tQ29udGVudFdvcmxkKCpfY29udGVudFdvcmxkKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENv
bnRlbnRXb3JsZDpzZWxmXSBhdXRvcmVsZWFzZV07CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgog
CisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgotI2ltcG9ydCAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2ltcG9ydCAiSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdElu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE0NiwxNCArMTQ3LDE0IEBAIHByaXZhdGU6CiAK
IC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNv
bnRlbnRXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0
byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJl
YWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFu
ZGxlckZvck5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIF91c2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCkBAIC0xNzUsNyArMTc2LDcgQEAgLSAodm9pZClfcmVtb3Zl
VXNlclNjcmlwdDooV0tVc2VyU2NyaXB0IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewotICAg
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJD
b250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCkBAIC0yMjgsMjQgKzIyOSwyNCBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtICh2b2lkKV9yZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1Vz
ZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKnVzZXJDb250ZW50V29ybGQt
Pl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNT
dHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRX
b3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVz
ZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogICAgIGlmICgh
X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQog
CiAtICh2b2lkKV9yZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRX
b3JsZAogewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29y
bGQpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX3JlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVy
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92
ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdv
cmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJNZXNz
YWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29y
bGQpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9
LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRl
bnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDE0ICs5NCwxNCBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNj
cmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJs
YWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1l
cyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29u
dGVudFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPnVzZXJDb250ZW50
V29ybGQoKSk7CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0
V2l0aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1
dG9yZWxlYXNlXTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRXb3JsZC5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDM4ICsyNiw1OCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29u
dGVudFdvcmxkSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
IgorCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0
aW9uIF9XS1VzZXJDb250ZW50V29ybGQKIAotKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxk
V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE5hbWU6
KE5TU3RyaW5nICopbmFtZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6d29ybGRXaXRoTmFtZShuYW1lKSk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfY29udGVudFdvcmxkID0gW1dLQ29udGVu
dFdvcmxkIHdvcmxkV2l0aE5hbWU6bmFtZV07CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKF9X
S1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAorLSAoaW5zdGFuY2V0eXBlKV9pbml0CiB7
Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9jb250ZW50V29ybGQgPSBbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXTsKKyAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgX3VzZXJDb250
ZW50V29ybGQtPn5Vc2VyQ29udGVudFdvcmxkKCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAg
X2NvbnRlbnRXb3JsZCA9IHdvcmxkOworICAgIHJldHVybiBzZWxmOworfQorCisrIChfV0tVc2Vy
Q29udGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0
dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0gYXV0
b3JlbGVhc2VdOworfQorCisrIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQKK3sK
KyAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgaWYgKF91c2VyQ29udGVudFdv
cmxkLmdldCgpID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF91c2VyQ29udGVudFdvcmxkLT5uYW1lKCk7Cisg
ICAgcmV0dXJuIFtfY29udGVudFdvcmxkIG5hbWVdOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmpl
Y3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
IHsKLSAgICByZXR1cm4gKl91c2VyQ29udGVudFdvcmxkOworICAgIHJldHVybiBbX2NvbnRlbnRX
b3JsZCBfYXBpT2JqZWN0XTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwyMCArMjUsNyBAQAogCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkLmgiCiAKLSNpbXBv
cnQgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCi0jaW1wb3J0
IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpVc2Vy
Q29udGVudFdvcmxkPiB7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tVc2VyQ29udGVudFdvcmxkOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfTsKLQotfQorQGNsYXNzIFdLQ29udGVudFdv
cmxkOwogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNjIsNiArNDksNyBAQCBpbmxpbmUgVmVjdG9y
PFdURjo6U3RyaW5nPiB0b1N0cmluZ1ZlY3RvCiAKIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRlbnRX
b3JsZCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gX3VzZXJDb250ZW50V29ybGQ7CisgICAgUmV0YWluUHRyPFdL
Q29udGVudFdvcmxkPiBfY29udGVudFdvcmxkOwogfQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aENvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIEBlbmQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6
IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZv
cmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hv
dWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6
OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250
ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHls
ZVVzZXJMZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtNTYsNyArNTYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2Ug
Y2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNv
bnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwog
ICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJD
b250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmlu
Zyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3Js
ZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRl
c3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9i
amVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxs
eSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3Ry
aW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5Qmxh
Y2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpT
dHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNw
cAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiAr
MjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5oIgogCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1ZGUg
IkFQSUNvbnRlbnRXb3JsZC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyPiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6dW5p
cXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQorUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoV1RGTW92ZShjbGllbnQpLCBu
YW1lLCB3b3JsZCkpOwogfQogCi1XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCitXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xp
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKICAgICA6
IG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV93
b3JsZCh3b3JsZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNpbmNsdWRlICJBUElD
b250ZW50V29ybGQuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogfQogCiBuYW1l
c3BhY2UgQVBJIHsKLWNsYXNzIFVzZXJDb250ZW50V29ybGQ7CitjbGFzcyBDb250ZW50V29ybGQ7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsMjEgKzU1LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOwogICAgIH07CiAK
LSAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBjcmVhdGUoc3RkOjp1bmlx
dWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Jik7CisgICAgc3RhdGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6
dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxk
Jik7CiAgICAgdmlydHVhbCB+V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoKTsKIAogICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBBUEk6OkNvbnRlbnRXb3Js
ZEJhc2UmIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorICAgIEFQSTo6Q29udGVu
dFdvcmxkJiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KIAogICAgIENsaWVudCYg
Y2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmlu
ZyYsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOworICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
KHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmLCBBUEk6OkNvbnRlbnRXb3Js
ZCYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiBtX3dvcmxkOworICAgIFJl
ZjxBUEk6OkNvbnRlbnRXb3JsZD4gbV93b3JsZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24g
MjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgot
I2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCkBAIC0xMDQsMTcgKzEwMywxNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRQCiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCh3ZWJQcm9jZXNzUHJveHkpLmlz
TmV3RW50cnkpCiAgICAgICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIoKSwgKnRoaXMpOwogCi0gICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlckNv
bnRlbnRXb3JsZHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5jb250ZW50V29y
bGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fY29udGVudFdv
cmxkcykKICAgICAgICAgcGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5hcHBlbmQod29ybGQu
a2V5LT53b3JsZERhdGEoKSk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyU2NyaXB0cy5p
c0VtcHR5KCkpOwogICAgIGZvciAoYXV0byB1c2VyU2NyaXB0IDogbV91c2VyU2NyaXB0cy0+ZWxl
bWVudHNPZlR5cGU8QVBJOjpVc2VyU2NyaXB0PigpKQotICAgICAgICBwYXJhbWV0ZXJzLnVzZXJT
Y3JpcHRzLmFwcGVuZCh7IHVzZXJTY3JpcHQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC0+dXNl
ckNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpIH0p
OworICAgICAgICBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzLmFwcGVuZCh7IHVzZXJTY3JpcHQtPmlk
ZW50aWZpZXIoKSwgdXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2Vy
U2NyaXB0LT51c2VyU2NyaXB0KCkgfSk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyU3R5
bGVTaGVldHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8gdXNlclN0eWxlU2hlZXQgOiBtX3Vz
ZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpVc2VyU3R5bGVTaGVldD4oKSkKLSAg
ICAgICAgcGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMuYXBwZW5kKHsgdXNlclN0eWxlU2hlZXQt
PmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKS5pZGVudGlm
aWVyKCksIHVzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpIH0pOworICAgICAgICBwYXJh
bWV0ZXJzLnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQoeyB1c2VyU3R5bGVTaGVldC0+aWRlbnRpZmll
cigpLCB1c2VyU3R5bGVTaGVldC0+Y29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2VyU3R5
bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKSB9KTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLm1l
c3NhZ2VIYW5kbGVycy5pc0VtcHR5KCkpOwogICAgIGZvciAoYXV0byYgaGFuZGxlciA6IG1fc2Ny
aXB0TWVzc2FnZUhhbmRsZXJzLnZhbHVlcygpKQpAQCAtMTQ2LDIxICsxNDUsMjEgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwogICAgIHdlYlByb2Nlc3NQcm94eS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpD
b250ZW50V29ybGRCYXNlJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmFkZENvbnRlbnRXb3JsZFVzZShBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7Ci0gICAg
aWYgKCZ3b3JsZCA9PSAmQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKQorICAg
IGlmICgmd29ybGQgPT0gJkFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb250ZW50V29ybGRzLmFk
ZCgmd29ybGQpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3Muc2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7
IHdvcmxkLndvcmxkRGF0YSgpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRXb3Js
ZHMoeyB3b3JsZC53b3JsZERhdGEoKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKLWJv
b2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnNob3VsZFNlbmRSZW1vdmVVc2VyQ29u
dGVudFdvcmxkc01lc3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCwgdW5zaWduZWQg
bnVtYmVyT2ZVc2VzVG9SZW1vdmUpCitib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpDb250ZW50V29ybGQm
IHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKIHsKLSAgICBpZiAoJndvcmxk
ID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCisgICAgaWYgKCZ3b3Js
ZCA9PSAmQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYXV0byBpdCA9IG1fY29udGVudFdvcmxkcy5maW5kKCZ3b3JsZCk7
CkBAIC0xNzQsMzEgKzE3MywzMSBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpzaG91CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29y
bGQmIHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKK3ZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRXb3JsZFVzZXMoQVBJOjpDb250ZW50
V29ybGQmIHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKIHsKLSAgICBpZiAo
c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZV
c2VzVG9SZW1vdmUpKSB7CisgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVDb250ZW50V29ybGRzTWVz
c2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHsgd29y
bGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRXb3Js
ZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAgICAgfQogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxk
VXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4mIHdvcmxk
cykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRXb3Js
ZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkPj4mIHdvcmxkcykK
IHsKICAgICBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRzVG9SZW1vdmU7CiAg
ICAgZm9yIChhdXRvJiB3b3JsZFVzZVBhaXIgOiB3b3JsZHMpIHsKLSAgICAgICAgaWYgKHNob3Vs
ZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2UoKndvcmxkVXNlUGFpci5rZXkuZ2V0
KCksIHdvcmxkVXNlUGFpci52YWx1ZSkpCisgICAgICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlQ29u
dGVudFdvcmxkc01lc3NhZ2UoKndvcmxkVXNlUGFpci5rZXkuZ2V0KCksIHdvcmxkVXNlUGFpci52
YWx1ZSkpCiAgICAgICAgICAgICB3b3JsZHNUb1JlbW92ZS5hcHBlbmQod29ybGRVc2VQYWlyLmtl
eS0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVy
KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0
ZWx5IGltbWVkaWF0ZWx5KQogewotICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxk
ID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7CisgICAgUmVmPEFQSTo6Q29udGVudFdv
cmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQuY29udGVudFdvcmxkKCk7CiAKLSAgICBhZGRVc2VyQ29u
dGVudFdvcmxkVXNlKHdvcmxkLmdldCgpKTsKKyAgICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQu
Z2V0KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3Jp
cHQpOwogCkBAIC0yMDgsMzMgKzIwNywzMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogewotICAgIFJlZjxBUEk6
OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7
CisgICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQuY29udGVudFdv
cmxkKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAg
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwo
JnVzZXJTY3JpcHQpOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQuZ2V0
KCksIDEpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQuZ2V0KCksIDEpOwogfQog
Ci12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0
cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxk
KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNl
clNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1
bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5yZW1vdmVBbGxPZlR5
cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU2NyaXB0KSB7
Ci0gICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3Js
ZDsKKyAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSA9PSAmd29ybGQ7
CiAgICAgfSk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgdXNlclNj
cmlwdHNSZW1vdmVkKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLCB1c2VyU2Ny
aXB0c1JlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cygpCiB7Ci0gICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6
VXNlckNvbnRlbnRXb3JsZD4+IHdvcmxkczsKKyAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJ
OjpDb250ZW50V29ybGQ+PiB3b3JsZHM7CiAgICAgZm9yIChhdXRvIHVzZXJTY3JpcHQgOiBtX3Vz
ZXJTY3JpcHRzLT5lbGVtZW50c09mVHlwZTxBUEk6OlVzZXJTY3JpcHQ+KCkpCi0gICAgICAgIHdv
cmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6OlVzZXJDb250ZW50V29ybGQqPigmdXNlclNjcmlwdC0+
dXNlckNvbnRlbnRXb3JsZCgpKSk7CisgICAgICAgIHdvcmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6
OkNvbnRlbnRXb3JsZCo+KCZ1c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSkpOwogCiAgICAgVmVj
dG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnM7CiAgICAgd29ybGRJ
ZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdvcmxkcy5zaXplKCkpOwpAQCAtMjQ2
LDE0ICsyNDUsMTQgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwog
CiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCi0gICAgcmVtb3ZlVXNl
ckNvbnRlbnRXb3JsZFVzZXMod29ybGRzKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdv
cmxkcyk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQogewotICAgIFJl
ZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRl
bnRXb3JsZCgpOworICAgIFJlZjxBUEk6OkNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVT
aGVldC5jb250ZW50V29ybGQoKTsKIAotICAgIGFkZFVzZXJDb250ZW50V29ybGRVc2Uod29ybGQu
Z2V0KCkpOworICAgIGFkZENvbnRlbnRXb3JsZFVzZSh3b3JsZC5nZXQoKSk7CiAKICAgICBtX3Vz
ZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAt
MjYzLDMzICsyNjIsMzMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVT
aGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBSZWY8QVBJ
OjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVzZXJDb250ZW50V29y
bGQoKTsKKyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQu
Y29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
ICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0
LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+
ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIAotICAgIHJlbW92ZVVzZXJD
b250ZW50V29ybGRVc2VzKHdvcmxkLmdldCgpLCAxKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRV
c2VzKHdvcmxkLmdldCgpLCAxKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRl
bnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hl
ZXRzUmVtb3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxB
UEk6OlVzZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKLSAg
ICAgICAgcmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3Js
ZDsKKyAgICAgICAgcmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+Y29udGVudFdvcmxkKCkgPT0gJndv
cmxkOwogICAgIH0pOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIHVz
ZXJTdHlsZVNoZWV0c1JlbW92ZWQpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQs
IHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQogewotICAgIEhhc2hDb3VudGVk
U2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiB3b3JsZHM7CisgICAgSGFzaENvdW50
ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkPj4gd29ybGRzOwogICAgIGZvciAoYXV0byB1
c2VyU3R5bGVTaGVldCA6IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50c09mVHlwZTxBUEk6OlVz
ZXJTdHlsZVNoZWV0PigpKQotICAgICAgICB3b3JsZHMuYWRkKGNvbnN0X2Nhc3Q8QVBJOjpVc2Vy
Q29udGVudFdvcmxkKj4oJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkpKTsKKyAg
ICAgICAgd29ybGRzLmFkZChjb25zdF9jYXN0PEFQSTo6Q29udGVudFdvcmxkKj4oJnVzZXJTdHls
ZVNoZWV0LT5jb250ZW50V29ybGQoKSkpOwogCiAgICAgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50
aWZpZXI+IHdvcmxkSWRlbnRpZmllcnM7CiAgICAgd29ybGRJZGVudGlmaWVycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHdvcmxkcy5zaXplKCkpOwpAQCAtMzAxLDcgKzMwMCw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KIAogICAgIG1fdXNlclN0eWxlU2hlZXRz
LT5lbGVtZW50cygpLmNsZWFyKCk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3
b3JsZHMpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGRzKTsKIH0KIAogYm9vbCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
KFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyKQpAQCAtMzEzLDcgKzMxMiw3IEBAIGJv
b2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFUKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBhZGRVc2VyQ29udGVudFdvcmxkVXNlKHdvcmxkKTsKKyAg
ICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQpOwogCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxl
cnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKQEAgLTMyMyw3ICszMjIs
NyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVz
ZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29u
dGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VI
YW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYm
IGl0LT52YWx1ZS0+d29ybGQoKS5pZGVudGlmaWVyKCkgPT0gd29ybGQuaWRlbnRpZmllcigpKSB7
CkBAIC0zMzIsMTMgKzMzMSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vCiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZShpdCk7
CiAKLSAgICAgICAgICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCAxKTsKKyAg
ICAgICAgICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQsIDEpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVB
bGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CkBAIC0z
NTIsNyArMzUxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdv
cmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNl
cyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsOCArNDEsNyBAQAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKIGNsYXNzIENvbnRl
bnRSdWxlTGlzdDsKLWNsYXNzIENvbnRlbnRXb3JsZEJhc2U7Ci1jbGFzcyBVc2VyQ29udGVudFdv
cmxkOworY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJT
dHlsZVNoZWV0OwogfQpAQCAtODIsMjEgKzgxLDIxIEBAIHB1YmxpYzoKICAgICBBUEk6OkFycmF5
JiB1c2VyU2NyaXB0cygpIHsgcmV0dXJuIG1fdXNlclNjcmlwdHMuZ2V0KCk7IH0KICAgICB2b2lk
IGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0
ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0Jik7Ci0gICAg
dm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6Q29udGVudFdvcmxkJik7CiAgICAgdm9pZCBy
ZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCiAgICAgQVBJOjpBcnJheSYgdXNlclN0eWxlU2hlZXRz
KCkgeyByZXR1cm4gbV91c2VyU3R5bGVTaGVldHMuZ2V0KCk7IH0KICAgICB2b2lkIGFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTdHls
ZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmKTsKLSAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyhBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzKCk7CiAKLSAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KEFQSTo6VXNlckNv
bnRlbnRXb3JsZCYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoQVBJOjpDb250ZW50
V29ybGQmKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgd2FzIGEgbmFtZSBjb25m
bGljdC4KICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlciYpOwotICAgIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShj
b25zdCBTdHJpbmcmLCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKLSAgICB2b2lkIHJlbW92ZUFs
bFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgdm9pZCBy
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYsIEFQSTo6Q29udGVu
dFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29u
dGVudFdvcmxkJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQg
YWRkTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwpAQCAtMTE3LDE3ICsxMTYs
MTcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNz
YWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAotICAgIHZvaWQgYWRk
VXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OkNvbnRlbnRXb3JsZEJhc2UmKTsKLSAgICB2b2lkIHJl
bW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVk
IG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRV
c2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiYpOwotICAg
IGJvb2wgc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZShBUEk6OlVzZXJD
b250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CisgICAgdm9pZCBh
ZGRDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUNv
bnRlbnRXb3JsZFVzZXMoQVBJOjpDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNU
b1JlbW92ZSk7CisgICAgdm9pZCByZW1vdmVDb250ZW50V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0
PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+Jik7CisgICAgYm9vbCBzaG91bGRTZW5kUmVtb3Zl
Q29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJP
ZlVzZXNUb1JlbW92ZSk7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2Vzc2Vz
OwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTY3JpcHRzOwogICAgIFJlZjxBUEk6OkFycmF5
PiBtX3VzZXJTdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKLSAgICBIYXNoQ291
bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGRCYXNlPj4gbV9jb250ZW50V29ybGRzOwor
ICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+IG1fY29udGVudFdv
cmxkczsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgV2Vha0hhc2hTZXQ8
TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2Vzc2VzOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjY1LDcgKzEyNjUsNiBAQAogCQk3Qzg4MkRGNzFDN0U5OTY1MDA2
QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJERjMxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJD
b250ZW50V29ybGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Qzg4MkRGOTFDN0U5OTZGMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Qzg4MkRGNTFDN0U5OTVFMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgg
Ki87IH07CiAJCTdDODgyREZBMUM3RTk5NzMwMDZCRjczMSAvKiBXS1VzZXJTY3JpcHRQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkRG
NjFDN0U5OTVFMDA2QkY3MzEgLyogV0tVc2VyU2NyaXB0UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDODgyREZEMUM3RTk5QTgwMDZC
RjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkRGQzFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNv
bnRlbnRXb3JsZC5oICovOyB9OwogCQk3Qzg5RDI5NDFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNl
clNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLzsgfTsKIAkJN0M4
OUQyOTgxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5NjFBNjc1M0IyMDAz
QTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJN0M4OUQyOUMxQTY3ODM3
QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjlBMUE2NzgzN0IwMDNBNUZERSAvKiBX
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQxNDQsOCArNDE0Myw2IEBACiAJCTdDODgyREY0MUM3RTk5NUUw
MDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gX1dLVXNlckNvbnRlbnRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M4ODJERjUxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50
V29ybGRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2Vy
Q29udGVudFdvcmxkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4
ODJERjYxQzdFOTk1RTAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyU2NyaXB0UHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3Qzg4MkRGQjFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNv
bnRlbnRXb3JsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElV
c2VyQ29udGVudFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4ODJE
RkMxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRXb3JsZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlw
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyU2NyaXB0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBB
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDODlEMjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODc0Niw4ICs4NzQzLDYgQEAKIAkJCQkxQTRE
NjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywKIAkJCQk1MUQxMjQzODFF
NkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lVGFzay5jcHAgKi8sCiAJCQkJNTFEMTI0Mzkx
RTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZVRhc2suaCAqLywKLQkJCQk3Qzg4MkRGQjFD
N0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAgKi8sCi0JCQkJN0M4ODJE
RkMxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCAqLywKIAkJCQk3Q0Iz
NjVBRjFEMzFERDFFMDA3MTU4Q0EgLyogQVBJVXNlckluaXRpYXRlZEFjdGlvbi5oICovLAogCQkJ
CTdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCAqLywKIAkJCQk3
Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovLApAQCAtMTAyMDEs
NyArMTAxOTYsNiBAQAogCQkJCUJDRTIzMTVEMTIyQzMwQ0EwMEQ1QzM1QSAvKiBBUElVUkxSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwQTFEMjEyMkRENTVFMDBDQzhDNTAgLyogQVBJ
VVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBB
NyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDODgy
REZEMUM3RTk5QTgwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0IzNjVCMTFEMzFERDFFMDA3MTU4Q0EgLyogQVBJVXNlckluaXRpYXRlZEFjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyOTQxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVz
ZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODc4NjI0MUJEQjU4RkYwMEQwMkFCQiAv
KiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBX
ZWJVc2VyQ29udGVuCiAgICAgcmV0dXJuIGl0ZXJhdG9yID09IHdvcmxkTWFwKCkuZW5kKCkgPyBu
dWxscHRyIDogaXRlcmF0b3ItPnZhbHVlLmZpcnN0LmdldCgpOwogfQogCi12b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29u
dGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJ
ZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZCkKIHsKICAgICBBU1NFUlQod29ybGQuZmlyc3QpOwog
ICAgIGlmICh3b3JsZC5maXJzdCA9PSBwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQpAQCAt
MTE5LDEzICsxMTksMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJD
bwogICAgIH0pOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNv
bnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+PiYgd29ybGRzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENv
bnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+PiYgd29ybGRzKQogewogICAgIGZvciAoYXV0byYgd29ybGQgOiB3b3JsZHMpCi0g
ICAgICAgIGFkZFVzZXJDb250ZW50V29ybGQod29ybGQpOworICAgICAgICBhZGRDb250ZW50V29y
bGQod29ybGQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNl
ckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3Js
ZElkZW50aWZpZXJzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUNvbnRl
bnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3JsZElkZW50
aWZpZXJzKQogewogICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29ybGRJZGVudGlm
aWVycykgewogICAgICAgICBBU1NFUlQod29ybGRJZGVudGlmaWVyKTsKQEAgLTEzMyw3ICsxMzMs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiAKICAgICAgICAg
YXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgICAgICBpZiAo
aXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlp
bmcgdG8gcmVtb3ZlIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1
NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHVzZXJTY3JpcHREYXRhIDogdXNlclNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdv
cmxkTWFwKCkuZmluZCh1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJU
cnlpbmcgdG8gYWRkIGEgVXNlclNjcmlwdCB0byBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBS
SXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHVzZXJTY3JpcHREYXRhLndvcmxkSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIGFk
ZCBhIFVzZXJTY3JpcHQgdG8gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRv
ZXMgbm90IGV4aXN0LiIsIHVzZXJTY3JpcHREYXRhLndvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiB7CiAgICAgYXV0byBp
dCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSB3b3Js
ZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBh
IFVzZXJTY3JpcHQgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0
IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgVXNlclNjcmlwdCBmcm9tIGEgQ29udGVu
dFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsCiAgICAgZm9y
IChhdXRvJiB3b3JsZElkZW50aWZpZXIgOiB3b3JsZElkZW50aWZpZXJzKSB7CiAgICAgICAgIGF1
dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0
ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5n
IHRvIHJlbW92ZSBhbGwgVXNlclNjcmlwdHMgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUi
IFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNl
clNjcmlwdHMgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBu
b3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkVXNlclN0CiAgICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVl
dERhdGEgOiB1c2VyU3R5bGVTaGVldHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCku
ZmluZCh1c2VyU3R5bGVTaGVldERhdGEud29ybGRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0
ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5n
IHRvIGFkZCBhIFVzZXJTdHlsZVNoZWV0IHRvIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgdXNlclN0eWxlU2hlZXREYXRhLndvcmxkSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRv
IGFkZCBhIFVzZXJTdHlsZVNoZWV0IHRvIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikg
dGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU3R5bGVTaGVldERhdGEud29ybGRJZGVudGlmaWVy
LnRvVUludDY0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92
ZVVzZQogewogICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsK
ICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMo
IlRyeWluZyB0byByZW1vdmUgYSBVc2VyU3R5bGVTaGVldCBmcm9tIGEgVXNlckNvbnRlbnRXb3Js
ZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBV
c2VyU3R5bGVTaGVldCBmcm9tIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBk
b2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsCiAgICAgZm9yIChhdXRvJiB3b3JsZElkZW50aWZpZXIgOiB3b3Js
ZElkZW50aWZpZXJzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJ
ZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNlclN0eWxlU2hlZXRz
IGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBl
eGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTdHlsZVNoZWV0cyBmcm9tIGEgQ29udGVu
dFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
Mjc4LDcgKzI3OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MK
ICAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpIHsKICAgICAg
ICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZChoYW5kbGVyLndvcmxkSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dB
bHdheXMoIlRyeWluZyB0byBhZGQgYSBVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgdG8gYSBVc2Vy
Q29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBoYW5k
bGVyLndvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiVHJ5aW5nIHRvIGFkZCBhIFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciB0byBhIENvbnRlbnRX
b3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgaGFuZGxlci53b3Js
ZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZVVzZQogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAgICAgYXV0byBpdCA9
IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSB3b3JsZE1h
cCgpLmVuZCgpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlciBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OnJlbW92ZUFsbAogICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29ybGRJ
ZGVudGlmaWVycykgewogICAgICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRl
bnRpZmllcik7CiAgICAgICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlciBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhp
c3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsOCBAQCBwdWJs
aWM6CiAKICAgICBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZEZvcklkZW50aWZpZXIo
Q29udGVudFdvcmxkSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRz
KGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4m
KTsKLSAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGQoY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRX
b3JsZElkZW50aWZpZXIsIFN0cmluZz4mKTsKKyAgICB2b2lkIGFkZENvbnRlbnRXb3JsZHMoY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+PiYpOwor
ICAgIHZvaWQgYWRkQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVu
dGlmaWVyLCBTdHJpbmc+Jik7CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhWZWN0b3I8V2ViVXNl
clNjcmlwdERhdGE+JiYsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAgICAgdm9pZCBh
ZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4mKTsK
ICAgICB2b2lkIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4mKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZW1v
dmVVc2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4m
KTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3Js
ZElkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQ29udGVudFdvcmxk
SWRlbnRpZmllciwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+Jik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTI0LDggKzI0LDggQEAKICAqLwogCiBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgewotICAgIEFkZFVzZXJDb250ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8V2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+PiB3b3JsZHMpOwotICAgIFJlbW92ZVVzZXJD
b250ZW50V29ybGRzKFZlY3RvcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxk
SWRlbnRpZmllcnMpOworICAgIEFkZENvbnRlbnRXb3JsZHMoVmVjdG9yPHN0ZDo6cGFpcjxXZWJL
aXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+IHdvcmxkcyk7CisgICAgUmVtb3Zl
Q29udGVudFdvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3Js
ZElkZW50aWZpZXJzKTsKIAogICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0
OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMsIGVudW06Ym9vbCBXZWJLaXQ6OkluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSk7CiAgICAgUmVtb3ZlVXNlclNjcmlw
dChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCB1aW50NjRf
dCBpZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA3LDcgKzcwNyw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0ZXJhdG9yIDogcGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycykKICAgICAgICAg
cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwog
Ci0gICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFt
ZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5h
ZGRDb250ZW50V29ybGRzKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpOwogICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhXVEZNb3ZlKHBhcmFtZXRlcnMudXNl
clNjcmlwdHMpLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKICAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXRzKHBhcmFtZXRlcnMudXNlclN0eWxl
U2hlZXRzKTsKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyhwYXJhbWV0ZXJzLm1lc3NhZ2VIYW5kbGVycyk7CkBAIC0zNDMyLDcgKzM0MzIs
NyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyCiAKIHZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50V29ybGQod29ybGREYXRhKTsK
KyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFdvcmxkKHdvcmxkRGF0YSk7
CiAgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
d29ybGREYXRhLmZpcnN0LCBjYWxsYmFja0lEKTsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU3NTI1KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMjYg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBf
V0tVc2VyQ29udGVudFdvcmxkIHNob3VsZCBiZSBhIHdyYXBwZXIgYXJvdW5kIFdLQ29udGVudFdv
cmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgy
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbToKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDIt
MjYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAg
VGVzdFdlYktpdEFQSSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgaGF2ZSBidW5kbGUgaWRl
bnRpZmllcnMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNl
ckNvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE1IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNl
clN0eWxlU2hlZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotVEVTVChVc2VyQ29u
dGVudFdvcmxkLCBOb3JtYWxXb3JsZCkKK1RFU1QoQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZCkK
IHsKICAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiBiYXNpY1VzZXJTY3JpcHQgPSBhZG9wdE5T
KFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIiIgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6
WUVTXSk7Ci0gICAgRVhQRUNUX0VRKFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRd
LCBbX1dLVXNlckNvbnRlbnRXb3JsZCBub3JtYWxXb3JsZF0pOworICAgIEVYUEVDVF9ORShbYmFz
aWNVc2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxkXSwgW19XS1VzZXJDb250ZW50V29ybGQgbm9y
bWFsV29ybGRdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2Jhc2ljVXNlclNjcmlwdCBfdXNlckNv
bnRlbnRXb3JsZF0ubmFtZSwgW19XS1VzZXJDb250ZW50V29ybGQgbm9ybWFsV29ybGRdLm5hbWUp
OwogICAgIEVYUEVDVF9OVUxMKFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdLm5h
bWUpOwogfQogCi1URVNUKFVzZXJDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkVXNlclNjcmlwdCkK
K1RFU1QoQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJTY3JpcHQpCiB7CiAgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC03NiwxNiArNzcsMTcgQEAg
VEVTVChVc2VyQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJTYwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotVEVTVChVc2VyQ29udGVudFdvcmxkLCBJc29s
YXRlZFdvcmxkKQorVEVTVChDb250ZW50V29ybGQsIElzb2xhdGVkV29ybGQpCiB7CiAgICAgUmV0
YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IGlzb2xhdGVkV29ybGQgPSBbX1dLVXNlckNvbnRl
bnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CiAgICAgRVhQRUNUX1dLX1NUUkVR
KFtpc29sYXRlZFdvcmxkIG5hbWVdLCBAIlRlc3RXb3JsZCIpOwogCiAgICAgUmV0YWluUHRyPFdL
VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIF9p
bml0V2l0aFNvdXJjZTpAIiIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10g
bGVnYWN5QmxhY2tsaXN0OkBbXSB1c2VyQ29udGVudFdvcmxkOmlzb2xhdGVkV29ybGQuZ2V0KCld
KTsKLSAgICBFWFBFQ1RfRVEoW3VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdLCBpc29sYXRl
ZFdvcmxkLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUoW3VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29y
bGRdLCBpc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3VzZXJTY3Jp
cHQgX3VzZXJDb250ZW50V29ybGRdLm5hbWUsIFtpc29sYXRlZFdvcmxkIG5hbWVdKTsKIH0KIAot
VEVTVChVc2VyQ29udGVudFdvcmxkLCBJc29sYXRlZFdvcmxkVXNlclNjcmlwdCkKK1RFU1QoQ29u
dGVudFdvcmxkLCBJc29sYXRlZFdvcmxkVXNlclNjcmlwdCkKIHsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZh
bHVhdGVKYXZhU2NyaXB0Lm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDEzIEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0
ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0j
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KLSNpbXBvcnQg
PFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxk
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUmVmLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0zNzEsMyAr
MzczLDM0IEBAIFRFU1QoV2ViS2l0LCBTUElKYXZhc2NyaXB0TWFya3VwVnNBUElDb24KICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogCiB9CisKK1RFU1QoV0tXZWJWaWV3LCBX
S0NvbnRlbnRXb3JsZFNQSSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0V0tX
ZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSJdOworCisgICAgV0tDb250ZW50V29ybGQgKndvcmxkID0gW1dLQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6QCJ0ZXN0V29ybGROYW1lIl07CisgICAgYXV0byBzY3JpcHQgPSBh
ZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBfaW5pdFdpdGhTb3VyY2U6QCJ3aW5kb3cudGVz
dCA9ICd0ZXN0VmFsdWUnIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVB
dERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpOTyBsZWdhY3lXaGl0ZWxpc3Q6W05TQXJy
YXkgYXJyYXldIGxlZ2FjeUJsYWNrbGlzdDpbTlNBcnJheSBhcnJheV0gYXNzb2NpYXRlZFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSB1c2VyQ29udGVudFdv
cmxkOndvcmxkLl91c2VyQ29udGVudFdvcmxkXSk7CisgICAgV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIgKnVzZXJDb250ZW50Q29udHJvbGxlciA9IHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi51
c2VyQ29udGVudENvbnRyb2xsZXI7CisgICAgW3VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNl
clNjcmlwdEltbWVkaWF0ZWx5OnNjcmlwdC5nZXQoKV07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LnRl
c3QiIGluQ29udGVudFdvcmxkOndvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb1N0cmluZzpAInRlc3RWYWx1ZSJdKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBbdXNlckNv
bnRlbnRDb250cm9sbGVyIF9yZW1vdmVVc2VyU2NyaXB0OnNjcmlwdC5nZXQoKV07CisKKyAgICBb
d2ViVmlldyByZWxvYWRdOworICAgIFsoVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSAqKXdlYlZpZXcu
Z2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAg
ICAKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJ3aW5kb3cudGVzdCIgaW5Db250ZW50V29ybGQ6d29ybGQgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBpc0RvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391799</attachid>
            <date>2020-02-26 16:10:29 -0800</date>
            <delta_ts>2020-02-26 16:39:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208274-20200226161028.patch</filename>
            <type>text/plain</type>
            <size>74814</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0wMi0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIF9XS1VzZXJDb250
ZW50V29ybGQgc2hvdWxkIGJlIGEgd3JhcHBlciBhcm91bmQgV0tDb250ZW50V29ybGQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgU1BJcyB3
ZXJlIGdldHRpbmcgY29uZnVzZWQgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBVcGRhdGVkIEFQ
SSB0ZXN0cyB3aGljaCBleHBlY3RlZCBwb2ludGVyIGVxdWFsaXR5LCB3aGljaCBpcyBubyBsb25n
ZXIgdHJ1ZSBvciBpbXBvcnRhbnQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6Q29udGVu
dFdvcmxkQmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
V29ybGQuaDoKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6aWRlbnRpZmllciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZEJhc2U6Om5hbWUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjp3b3JsZERhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjpDb250ZW50V29y
bGRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRXb3JsZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6VXNl
clN0eWxlU2hlZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAo
V0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVz
ZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
OgorICAgICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
V29ybGQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2VyU2NyaXB0
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNl
ckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX2Fk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVn
YWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50V29ybGQgX2luaXRXaXRoTmFtZTpdKToKKyAgICAgICAgKC1bX1dLVXNl
ckNvbnRlbnRXb3JsZCBfaW5pdF0pOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudFdvcmxkIF9p
bml0V2l0aENvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKCtbX1dLVXNlckNvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdv
cmxkXSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50V29ybGQgbmFtZV0pOgorICAgICAgICAo
LVtfV0tVc2VyQ29udGVudFdvcmxkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRXb3JsZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVT
aGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dL
VXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0
ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6Ondvcmxk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUNvbnRlbnRXb3JsZFVzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJDb250ZW50V29ybGRVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29u
dGVudFdvcmxkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlckNvbnRlbnRXb3JsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9wcm9jZXNzRGlzcGxheU5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCk6CisKIDIwMjAtMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEFsbG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nl
c3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjU3MzY5KQorKysgU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw2IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW8KIFVJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAotVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKLSAgICAgICAgVXNlckNvbnRlbnRXb3JsZCwKICAg
ICAgICAgVXNlckluaXRpYXRlZEFjdGlvbiwKICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLAogICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUx
LDEyICszNTEsNiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwCiAg
ICAgICAgIHdyYXBwZXIgPSBbV0tDb250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgVHlwZTo6VXNlckNvbnRlbnRXb3JsZDoKLSAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVu
dFdvcmxkIGFsbG9jXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBUeXBlOjpVc2VySW5pdGlhdGVkQWN0aW9uOgog
ICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJJbml0aWF0ZWRBY3Rpb24gYWxsb2NdOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29y
bGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAK
LSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxk
U2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCi1Db250ZW50V29ybGRCYXNlOjpDb250
ZW50V29ybGRCYXNlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorQ29udGVudFdvcmxkOjpDb250
ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCiAgICAgOiBtX25hbWUobmFtZSkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKQEAgLTc2LDIxICs3NSw2IEBAIENvbnRl
bnRXb3JsZCYgQ29udGVudFdvcmxkOjpkZWZhdWx0Q2xpZW4KICAgICByZXR1cm4gKndvcmxkLmdl
dCgpOwogfQogCi1Db250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2UobmFtZSkKLXsKLX0KLQotQ29udGVudFdvcmxk
OjpDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKGlkZW50aWZpZXIpCi17Ci19Ci0KLUNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKHVzZXJDb250ZW50V29ybGQuaWRlbnRpZmllcigpLCB1
c2VyQ29udGVudFdvcmxkLm5hbWUoKSkKLXsKLX0KLQogQ29udGVudFdvcmxkOjp+Q29udGVudFdv
cmxkKCkKIHsKICAgICBpZiAobmFtZSgpLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaAkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwzMiArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgVXNlckNv
bnRlbnRXb3JsZDsKLQotY2xhc3MgQ29udGVudFdvcmxkQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+Q29udGVudFdvcmxkQmFzZSgpID0gZGVmYXVsdDsKLQotICAgIFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KLSAgICBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBXVEY6OlN0
cmluZz4gd29ybGREYXRhKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIENvbnRlbnRXb3JsZEJhc2Uo
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgfQotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpDb250ZW50V29y
bGRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbmFtZShuYW1lKSB7IH0K
LXByaXZhdGU6Ci0gICAgV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKLSAgICBXVEY6OlN0cmluZyBtX25hbWU7Ci19OwotCi1jbGFzcyBDb250ZW50V29ybGQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29y
bGQ+LCBwdWJsaWMgQ29udGVudFdvcmxkQmFzZSB7CitjbGFzcyBDb250ZW50V29ybGQgZmluYWwg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbnRlbnRXb3JsZD4gc2hhcmVkV29ybGRXaXRo
TmFtZShjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBDb250ZW50V29ybGQmIHBhZ2VD
b250ZW50V29ybGQoKTsKQEAgLTY0LDEzICszOSwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5Db250ZW50V29ybGQoKTsKIAotICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBPYmplY3RJ
bXBsOjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IE9iamVjdEltcGw6
OmRlcmVmKCk7IH0KKyAgICBXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgc3RkOjpwYWlyPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IENvbnRl
bnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIpOwotICAgIGV4cGxpY2l0IENv
bnRlbnRXb3JsZChjb25zdCBVc2VyQ29udGVudFdvcmxkJik7CisgICAgZXhwbGljaXQgQ29udGVu
dFdvcmxkKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KKworICAgIFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV1RGOjpTdHJpbmcgbV9uYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRX
b3JsZFNoYXJlZC5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLQotUmVmPFVzZXJDb250ZW50V29ybGQ+
IFVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRXb3JsZChuYW1lKSk7Ci19
Ci0KLVJlZjxVc2VyQ29udGVudFdvcmxkPiBVc2VyQ29udGVudFdvcmxkOjpmcm9tQ29udGVudFdv
cmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxkKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVzZXJDb250ZW50V29ybGQoY29udGVudFdvcmxkKSk7Ci19Ci0KLVVzZXJDb250
ZW50V29ybGQmIFVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkKLXsKLSAgICBzdGF0aWMg
VXNlckNvbnRlbnRXb3JsZCogd29ybGQgPSBuZXcgVXNlckNvbnRlbnRXb3JsZChGb3JOb3JtYWxX
b3JsZE9ubHk6Ok5vcm1hbFdvcmxkKTsKLSAgICByZXR1cm4gKndvcmxkOwotfQotCi1Vc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAg
IDogQ29udGVudFdvcmxkQmFzZShuYW1lKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjpVc2Vy
Q29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2Uo
V2ViS2l0OjpwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQotewotfQotCi1Vc2VyQ29udGVu
dFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxk
KQotICAgIDogQ29udGVudFdvcmxkQmFzZShjb250ZW50V29ybGQuaWRlbnRpZmllcigpLCBjb250
ZW50V29ybGQubmFtZSgpKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjp+VXNlckNvbnRlbnRX
b3JsZCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBVc2VyQ29udGVudFdvcmxkIGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRl
bnRXb3JsZD4sIHB1YmxpYyBDb250ZW50V29ybGRCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmKTsK
LSAgICBzdGF0aWMgVXNlckNvbnRlbnRXb3JsZCYgbm9ybWFsV29ybGQoKTsKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IGZyb21Db250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxk
Jik7Ci0KLSAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudFdvcmxkKCk7Ci0KLSAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgT2JqZWN0SW1wbDo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBPYmplY3RJbXBsOjpkZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgVXNlckNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IFVz
ZXJDb250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxkJik7Ci0KLSAgICBlbnVtIGNsYXNzIEZv
ck5vcm1hbFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07Ci0gICAgZXhwbGljaXQgVXNlckNvbnRl
bnRXb3JsZChGb3JOb3JtYWxXb3JsZE9ubHkpOwotCi19OwotCi19IC8vIG5hbWVzcGFjZSBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAJ
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDEwIEBAIFdURjo6VVJMIFVz
ZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKICAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJp
bmcoInVzZXItc2NyaXB0OiIsICsraWRlbnRpZmllcikgfTsKIH0KIAotVXNlclNjcmlwdDo6VXNl
clNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCitVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91c2VyU2NyaXB0
KHVzZXJTY3JpcHQpCiAgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCi0KIH0gLy8gbmFtZXNw
YWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclNjcmlwdC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2LDIxICsz
NiwyMSBAQCBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6
CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGljIFJlZjxVc2VyU2NyaXB0PiBj
cmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYg
d29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdU
Rk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAgICAgfQogCi0gICAgVXNlclNjcmlwdChXZWJD
b3JlOjpVc2VyU2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBVc2VyU2NyaXB0
KFdlYkNvcmU6OlVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0OyB9CiAgICAgCi0gICAgVXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgpIHsg
cmV0dXJuIG1fd29ybGQ7IH0KLSAgICBjb25zdCBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVu
dFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIENvbnRlbnRXb3JsZCYgY29u
dGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIGNvbnN0IENvbnRlbnRXb3JsZCYg
Y29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IG1fdXNlclNjcmlwdDsKLSAgICBSZWY8VXNlckNvbnRl
bnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgV1RGOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VQogICAgIHJldHVybiB7IHsgfSwgbWFrZVN0cmluZygidXNlci1zdHlsZS1zaGVldDoiLCArK2lk
ZW50aWZpZXIpIH07CiB9CiAKLVVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKK1VzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91
c2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2
LDIxICszNiwyMSBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplCiBw
dWJsaWM6CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
dXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGlj
IFJlZjxVc2VyU3R5bGVTaGVldD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJT
dHlsZVNoZWV0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5bGVTaGVldChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSwg
d29ybGQpKTsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CiAKLSAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxk
KCkgeyByZXR1cm4gbV93b3JsZDsgfQotICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJD
b250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgQ29udGVudFdvcmxk
JiBjb250ZW50V29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgY29uc3QgQ29udGVudFdv
cmxkJiBjb250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgbV91c2VyU3R5bGVTaGVldDsKLSAgICBSZWY8
VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29u
dGVudFJ1bGVMaXN0LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1
ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oIgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxl
U2hlZXQoV0tQYWdlCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQ
YXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJucyk7CiAKLSAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQgPSBB
UEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3Vy
Y2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6ICBVUkwoVVJM
KCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3Rv
cigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+
IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJs
YW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRl
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJs
YWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHRv
SW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQ
YWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRv
SW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNl
clNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdU
Rk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVj
dG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmpl
Y3RlZEZyYW1lcykgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAg
ICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYg
V0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25s
eSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVz
ZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNl
UmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVc2VyU2NyaXB0Q29weVNvdXJjZShXS1VzZXJTY3JpcHRSZWYg
dXNlclNjcmlwdFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKF9XS1VzZXJDb250ZW50V29ybGQgKilfdXNl
ckNvbnRlbnRXb3JsZAogewotICAgIHJldHVybiBbW3dyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpmcm9tQ29udGVudFdvcmxkKCpfY29udGVudFdvcmxkKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENv
bnRlbnRXb3JsZDpzZWxmXSBhdXRvcmVsZWFzZV07CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgog
CisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgotI2ltcG9ydCAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2ltcG9ydCAiSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdElu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE0NiwxNCArMTQ3LDE0IEBAIHByaXZhdGU6CiAK
IC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNv
bnRlbnRXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0
byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJl
YWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFu
ZGxlckZvck5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIF91c2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCkBAIC0xNzUsNyArMTc2LDcgQEAgLSAodm9pZClfcmVtb3Zl
VXNlclNjcmlwdDooV0tVc2VyU2NyaXB0IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewotICAg
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJD
b250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCkBAIC0yMjgsMjQgKzIyOSwyNCBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtICh2b2lkKV9yZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1Vz
ZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKnVzZXJDb250ZW50V29ybGQt
Pl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNT
dHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRX
b3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVz
ZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogICAgIGlmICgh
X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQog
CiAtICh2b2lkKV9yZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRX
b3JsZAogewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29y
bGQpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX3JlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVy
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92
ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdv
cmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJNZXNz
YWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29y
bGQpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9
LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRl
bnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDE0ICs5NCwxNCBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNj
cmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJs
YWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1l
cyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29u
dGVudFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPnVzZXJDb250ZW50
V29ybGQoKSk7CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0
V2l0aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1
dG9yZWxlYXNlXTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRXb3JsZC5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDM4ICsyNiw1OCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29u
dGVudFdvcmxkSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
IgorCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0
aW9uIF9XS1VzZXJDb250ZW50V29ybGQKIAotKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxk
V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE5hbWU6
KE5TU3RyaW5nICopbmFtZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6d29ybGRXaXRoTmFtZShuYW1lKSk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfY29udGVudFdvcmxkID0gW1dLQ29udGVu
dFdvcmxkIHdvcmxkV2l0aE5hbWU6bmFtZV07CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKF9X
S1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAorLSAoaW5zdGFuY2V0eXBlKV9pbml0CiB7
Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9jb250ZW50V29ybGQgPSBbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXTsKKyAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgX3VzZXJDb250
ZW50V29ybGQtPn5Vc2VyQ29udGVudFdvcmxkKCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAg
X2NvbnRlbnRXb3JsZCA9IHdvcmxkOworICAgIHJldHVybiBzZWxmOworfQorCisrIChfV0tVc2Vy
Q29udGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0
dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0gYXV0
b3JlbGVhc2VdOworfQorCisrIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQKK3sK
KyAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgaWYgKF91c2VyQ29udGVudFdv
cmxkLmdldCgpID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF91c2VyQ29udGVudFdvcmxkLT5uYW1lKCk7Cisg
ICAgcmV0dXJuIFtfY29udGVudFdvcmxkIG5hbWVdOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmpl
Y3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
IHsKLSAgICByZXR1cm4gKl91c2VyQ29udGVudFdvcmxkOworICAgIHJldHVybiBbX2NvbnRlbnRX
b3JsZCBfYXBpT2JqZWN0XTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwyMCArMjUsNyBAQAogCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkLmgiCiAKLSNpbXBv
cnQgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCi0jaW1wb3J0
IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpVc2Vy
Q29udGVudFdvcmxkPiB7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tVc2VyQ29udGVudFdvcmxkOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfTsKLQotfQorQGNsYXNzIFdLQ29udGVudFdv
cmxkOwogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNjIsNiArNDksNyBAQCBpbmxpbmUgVmVjdG9y
PFdURjo6U3RyaW5nPiB0b1N0cmluZ1ZlY3RvCiAKIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRlbnRX
b3JsZCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gX3VzZXJDb250ZW50V29ybGQ7CisgICAgUmV0YWluUHRyPFdL
Q29udGVudFdvcmxkPiBfY29udGVudFdvcmxkOwogfQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aENvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIEBlbmQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6
IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZv
cmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hv
dWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6
OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250
ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHls
ZVVzZXJMZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtNTYsNyArNTYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2Ug
Y2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNv
bnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwog
ICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJD
b250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmlu
Zyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3Js
ZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRl
c3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9i
amVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxs
eSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3Ry
aW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5Qmxh
Y2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpT
dHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNw
cAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNiAr
MjYsMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5oIgogCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1ZGUg
IkFQSUNvbnRlbnRXb3JsZC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUmVmPFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyPiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6dW5p
cXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQorUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoV1RGTW92ZShjbGllbnQpLCBu
YW1lLCB3b3JsZCkpOwogfQogCi1XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCitXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xp
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKICAgICA6
IG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV93
b3JsZCh3b3JsZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNpbmNsdWRlICJBUElD
b250ZW50V29ybGQuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogfQogCiBuYW1l
c3BhY2UgQVBJIHsKLWNsYXNzIFVzZXJDb250ZW50V29ybGQ7CitjbGFzcyBDb250ZW50V29ybGQ7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsMjEgKzU1LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlJikgPSAwOwogICAgIH07CiAK
LSAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBjcmVhdGUoc3RkOjp1bmlx
dWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Jik7CisgICAgc3RhdGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0ZDo6
dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxk
Jik7CiAgICAgdmlydHVhbCB+V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoKTsKIAogICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBBUEk6OkNvbnRlbnRXb3Js
ZEJhc2UmIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQorICAgIEFQSTo6Q29udGVu
dFdvcmxkJiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KIAogICAgIENsaWVudCYg
Y2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY2xpZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmlu
ZyYsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOworICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
KHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmLCBBUEk6OkNvbnRlbnRXb3Js
ZCYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5n
IG1fbmFtZTsKLSAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiBtX3dvcmxkOworICAgIFJl
ZjxBUEk6OkNvbnRlbnRXb3JsZD4gbV93b3JsZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24g
MjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgot
I2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCkBAIC0xMDQsMTcgKzEwMywxNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRQCiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCh3ZWJQcm9jZXNzUHJveHkpLmlz
TmV3RW50cnkpCiAgICAgICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIoKSwgKnRoaXMpOwogCi0gICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlckNv
bnRlbnRXb3JsZHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQocGFyYW1ldGVycy5jb250ZW50V29y
bGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fY29udGVudFdv
cmxkcykKICAgICAgICAgcGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5hcHBlbmQod29ybGQu
a2V5LT53b3JsZERhdGEoKSk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyU2NyaXB0cy5p
c0VtcHR5KCkpOwogICAgIGZvciAoYXV0byB1c2VyU2NyaXB0IDogbV91c2VyU2NyaXB0cy0+ZWxl
bWVudHNPZlR5cGU8QVBJOjpVc2VyU2NyaXB0PigpKQotICAgICAgICBwYXJhbWV0ZXJzLnVzZXJT
Y3JpcHRzLmFwcGVuZCh7IHVzZXJTY3JpcHQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC0+dXNl
ckNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpIH0p
OworICAgICAgICBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzLmFwcGVuZCh7IHVzZXJTY3JpcHQtPmlk
ZW50aWZpZXIoKSwgdXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2Vy
U2NyaXB0LT51c2VyU2NyaXB0KCkgfSk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyU3R5
bGVTaGVldHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8gdXNlclN0eWxlU2hlZXQgOiBtX3Vz
ZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpVc2VyU3R5bGVTaGVldD4oKSkKLSAg
ICAgICAgcGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMuYXBwZW5kKHsgdXNlclN0eWxlU2hlZXQt
PmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKS5pZGVudGlm
aWVyKCksIHVzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpIH0pOworICAgICAgICBwYXJh
bWV0ZXJzLnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQoeyB1c2VyU3R5bGVTaGVldC0+aWRlbnRpZmll
cigpLCB1c2VyU3R5bGVTaGVldC0+Y29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2VyU3R5
bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKSB9KTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLm1l
c3NhZ2VIYW5kbGVycy5pc0VtcHR5KCkpOwogICAgIGZvciAoYXV0byYgaGFuZGxlciA6IG1fc2Ny
aXB0TWVzc2FnZUhhbmRsZXJzLnZhbHVlcygpKQpAQCAtMTQ2LDIxICsxNDUsMjEgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwogICAgIHdlYlByb2Nlc3NQcm94eS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpD
b250ZW50V29ybGRCYXNlJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmFkZENvbnRlbnRXb3JsZFVzZShBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7Ci0gICAg
aWYgKCZ3b3JsZCA9PSAmQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKQorICAg
IGlmICgmd29ybGQgPT0gJkFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9jb250ZW50V29ybGRzLmFk
ZCgmd29ybGQpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3Muc2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7
IHdvcmxkLndvcmxkRGF0YSgpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRXb3Js
ZHMoeyB3b3JsZC53b3JsZERhdGEoKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKLWJv
b2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnNob3VsZFNlbmRSZW1vdmVVc2VyQ29u
dGVudFdvcmxkc01lc3NhZ2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCwgdW5zaWduZWQg
bnVtYmVyT2ZVc2VzVG9SZW1vdmUpCitib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpDb250ZW50V29ybGQm
IHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKIHsKLSAgICBpZiAoJndvcmxk
ID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCisgICAgaWYgKCZ3b3Js
ZCA9PSAmQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYXV0byBpdCA9IG1fY29udGVudFdvcmxkcy5maW5kKCZ3b3JsZCk7
CkBAIC0xNzQsMzEgKzE3MywzMSBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpzaG91CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29y
bGQmIHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKK3ZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRXb3JsZFVzZXMoQVBJOjpDb250ZW50
V29ybGQmIHdvcmxkLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKIHsKLSAgICBpZiAo
c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZSh3b3JsZCwgbnVtYmVyT2ZV
c2VzVG9SZW1vdmUpKSB7CisgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVDb250ZW50V29ybGRzTWVz
c2FnZSh3b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHsgd29y
bGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRXb3Js
ZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAgICAgfQogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxk
VXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4mIHdvcmxk
cykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRXb3Js
ZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkPj4mIHdvcmxkcykK
IHsKICAgICBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRzVG9SZW1vdmU7CiAg
ICAgZm9yIChhdXRvJiB3b3JsZFVzZVBhaXIgOiB3b3JsZHMpIHsKLSAgICAgICAgaWYgKHNob3Vs
ZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2UoKndvcmxkVXNlUGFpci5rZXkuZ2V0
KCksIHdvcmxkVXNlUGFpci52YWx1ZSkpCisgICAgICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlQ29u
dGVudFdvcmxkc01lc3NhZ2UoKndvcmxkVXNlUGFpci5rZXkuZ2V0KCksIHdvcmxkVXNlUGFpci52
YWx1ZSkpCiAgICAgICAgICAgICB3b3JsZHNUb1JlbW92ZS5hcHBlbmQod29ybGRVc2VQYWlyLmtl
eS0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVy
KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2Ny
aXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0
ZWx5IGltbWVkaWF0ZWx5KQogewotICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxk
ID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7CisgICAgUmVmPEFQSTo6Q29udGVudFdv
cmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQuY29udGVudFdvcmxkKCk7CiAKLSAgICBhZGRVc2VyQ29u
dGVudFdvcmxkVXNlKHdvcmxkLmdldCgpKTsKKyAgICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQu
Z2V0KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3Jp
cHQpOwogCkBAIC0yMDgsMzMgKzIwNywzMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQogewotICAgIFJlZjxBUEk6
OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51c2VyQ29udGVudFdvcmxkKCk7
CisgICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQuY29udGVudFdv
cmxkKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAg
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwo
JnVzZXJTY3JpcHQpOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQuZ2V0
KCksIDEpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQuZ2V0KCksIDEpOwogfQog
Ci12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0
cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxk
KQogewogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNl
clNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1
bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5yZW1vdmVBbGxPZlR5
cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU2NyaXB0KSB7
Ci0gICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3Js
ZDsKKyAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSA9PSAmd29ybGQ7
CiAgICAgfSk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgdXNlclNj
cmlwdHNSZW1vdmVkKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLCB1c2VyU2Ny
aXB0c1JlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVBbGxVc2VyU2NyaXB0cygpCiB7Ci0gICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6
VXNlckNvbnRlbnRXb3JsZD4+IHdvcmxkczsKKyAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJ
OjpDb250ZW50V29ybGQ+PiB3b3JsZHM7CiAgICAgZm9yIChhdXRvIHVzZXJTY3JpcHQgOiBtX3Vz
ZXJTY3JpcHRzLT5lbGVtZW50c09mVHlwZTxBUEk6OlVzZXJTY3JpcHQ+KCkpCi0gICAgICAgIHdv
cmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6OlVzZXJDb250ZW50V29ybGQqPigmdXNlclNjcmlwdC0+
dXNlckNvbnRlbnRXb3JsZCgpKSk7CisgICAgICAgIHdvcmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6
OkNvbnRlbnRXb3JsZCo+KCZ1c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSkpOwogCiAgICAgVmVj
dG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcnM7CiAgICAgd29ybGRJ
ZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdvcmxkcy5zaXplKCkpOwpAQCAtMjQ2
LDE0ICsyNDUsMTQgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwog
CiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCi0gICAgcmVtb3ZlVXNl
ckNvbnRlbnRXb3JsZFVzZXMod29ybGRzKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdv
cmxkcyk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQogewotICAgIFJl
ZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRl
bnRXb3JsZCgpOworICAgIFJlZjxBUEk6OkNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVT
aGVldC5jb250ZW50V29ybGQoKTsKIAotICAgIGFkZFVzZXJDb250ZW50V29ybGRVc2Uod29ybGQu
Z2V0KCkpOworICAgIGFkZENvbnRlbnRXb3JsZFVzZSh3b3JsZC5nZXQoKSk7CiAKICAgICBtX3Vz
ZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAt
MjYzLDMzICsyNjIsMzMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVT
aGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBSZWY8QVBJ
OjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVzZXJDb250ZW50V29y
bGQoKTsKKyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQu
Y29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
ICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0
LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+
ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIAotICAgIHJlbW92ZVVzZXJD
b250ZW50V29ybGRVc2VzKHdvcmxkLmdldCgpLCAxKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRV
c2VzKHdvcmxkLmdldCgpLCAxKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRl
bnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hl
ZXRzUmVtb3ZlZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxB
UEk6OlVzZXJTdHlsZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKLSAg
ICAgICAgcmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3Js
ZDsKKyAgICAgICAgcmV0dXJuICZ1c2VyU3R5bGVTaGVldC0+Y29udGVudFdvcmxkKCkgPT0gJndv
cmxkOwogICAgIH0pOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIHVz
ZXJTdHlsZVNoZWV0c1JlbW92ZWQpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQs
IHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQogewotICAgIEhhc2hDb3VudGVk
U2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiB3b3JsZHM7CisgICAgSGFzaENvdW50
ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkPj4gd29ybGRzOwogICAgIGZvciAoYXV0byB1
c2VyU3R5bGVTaGVldCA6IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50c09mVHlwZTxBUEk6OlVz
ZXJTdHlsZVNoZWV0PigpKQotICAgICAgICB3b3JsZHMuYWRkKGNvbnN0X2Nhc3Q8QVBJOjpVc2Vy
Q29udGVudFdvcmxkKj4oJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkpKTsKKyAg
ICAgICAgd29ybGRzLmFkZChjb25zdF9jYXN0PEFQSTo6Q29udGVudFdvcmxkKj4oJnVzZXJTdHls
ZVNoZWV0LT5jb250ZW50V29ybGQoKSkpOwogCiAgICAgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50
aWZpZXI+IHdvcmxkSWRlbnRpZmllcnM7CiAgICAgd29ybGRJZGVudGlmaWVycy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHdvcmxkcy5zaXplKCkpOwpAQCAtMzAxLDcgKzMwMCw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KIAogICAgIG1fdXNlclN0eWxlU2hlZXRz
LT5lbGVtZW50cygpLmNsZWFyKCk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3
b3JsZHMpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGRzKTsKIH0KIAogYm9vbCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
KFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyJiBoYW5kbGVyKQpAQCAtMzEzLDcgKzMxMiw3IEBAIGJv
b2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFUKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBhZGRVc2VyQ29udGVudFdvcmxkVXNlKHdvcmxkKTsKKyAg
ICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQpOwogCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxl
cnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKQEAgLTMyMyw3ICszMjIs
NyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVz
ZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29u
dGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VI
YW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYm
IGl0LT52YWx1ZS0+d29ybGQoKS5pZGVudGlmaWVyKCkgPT0gd29ybGQuaWRlbnRpZmllcigpKSB7
CkBAIC0zMzIsMTMgKzMzMSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vCiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZShpdCk7
CiAKLSAgICAgICAgICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCAxKTsKKyAg
ICAgICAgICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQsIDEpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVB
bGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CkBAIC0z
NTIsNyArMzUxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdv
cmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNl
cyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YVJlZmVyZW5jZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsOCArNDEsNyBAQAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBcnJheTsKIGNsYXNzIENvbnRl
bnRSdWxlTGlzdDsKLWNsYXNzIENvbnRlbnRXb3JsZEJhc2U7Ci1jbGFzcyBVc2VyQ29udGVudFdv
cmxkOworY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJT
dHlsZVNoZWV0OwogfQpAQCAtODIsMjEgKzgxLDIxIEBAIHB1YmxpYzoKICAgICBBUEk6OkFycmF5
JiB1c2VyU2NyaXB0cygpIHsgcmV0dXJuIG1fdXNlclNjcmlwdHMuZ2V0KCk7IH0KICAgICB2b2lk
IGFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0
ZWx5KTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0Jik7Ci0gICAg
dm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6Q29udGVudFdvcmxkJik7CiAgICAgdm9pZCBy
ZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCiAgICAgQVBJOjpBcnJheSYgdXNlclN0eWxlU2hlZXRz
KCkgeyByZXR1cm4gbV91c2VyU3R5bGVTaGVldHMuZ2V0KCk7IH0KICAgICB2b2lkIGFkZFVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTdHls
ZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmKTsKLSAgICB2b2lkIHJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyhBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzKCk7CiAKLSAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KEFQSTo6VXNlckNv
bnRlbnRXb3JsZCYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoQVBJOjpDb250ZW50
V29ybGQmKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgd2FzIGEgbmFtZSBjb25m
bGljdC4KICAgICBib29sIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlciYpOwotICAgIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShj
b25zdCBTdHJpbmcmLCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKLSAgICB2b2lkIHJlbW92ZUFs
bFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgdm9pZCBy
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYsIEFQSTo6Q29udGVu
dFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6Q29u
dGVudFdvcmxkJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIHZvaWQg
YWRkTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwpAQCAtMTE3LDE3ICsxMTYs
MTcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBtZXNz
YWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAotICAgIHZvaWQgYWRk
VXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OkNvbnRlbnRXb3JsZEJhc2UmKTsKLSAgICB2b2lkIHJl
bW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVk
IG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRV
c2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiYpOwotICAg
IGJvb2wgc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZShBUEk6OlVzZXJD
b250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CisgICAgdm9pZCBh
ZGRDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUNv
bnRlbnRXb3JsZFVzZXMoQVBJOjpDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNU
b1JlbW92ZSk7CisgICAgdm9pZCByZW1vdmVDb250ZW50V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0
PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+Jik7CisgICAgYm9vbCBzaG91bGRTZW5kUmVtb3Zl
Q29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJP
ZlVzZXNUb1JlbW92ZSk7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2Vzc2Vz
OwogICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTY3JpcHRzOwogICAgIFJlZjxBUEk6OkFycmF5
PiBtX3VzZXJTdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI+PiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVyczsKLSAgICBIYXNoQ291
bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGRCYXNlPj4gbV9jb250ZW50V29ybGRzOwor
ICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+IG1fY29udGVudFdv
cmxkczsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgV2Vha0hhc2hTZXQ8
TmV0d29ya1Byb2Nlc3NQcm94eT4gbV9uZXR3b3JrUHJvY2Vzc2VzOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjY1LDcgKzEyNjUsNiBAQAogCQk3Qzg4MkRGNzFDN0U5OTY1MDA2
QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJERjMxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJD
b250ZW50V29ybGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Qzg4MkRGOTFDN0U5OTZGMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Qzg4MkRGNTFDN0U5OTVFMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmgg
Ki87IH07CiAJCTdDODgyREZBMUM3RTk5NzMwMDZCRjczMSAvKiBXS1VzZXJTY3JpcHRQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkRG
NjFDN0U5OTVFMDA2QkY3MzEgLyogV0tVc2VyU2NyaXB0UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDODgyREZEMUM3RTk5QTgwMDZC
RjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkRGQzFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNv
bnRlbnRXb3JsZC5oICovOyB9OwogCQk3Qzg5RDI5NDFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNl
clNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLzsgfTsKIAkJN0M4
OUQyOTgxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5NjFBNjc1M0IyMDAz
QTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJN0M4OUQyOUMxQTY3ODM3
QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjlBMUE2NzgzN0IwMDNBNUZERSAvKiBX
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQxNDQsOCArNDE0Myw2IEBACiAJCTdDODgyREY0MUM3RTk5NUUw
MDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gX1dLVXNlckNvbnRlbnRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M4ODJERjUxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50
V29ybGRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2Vy
Q29udGVudFdvcmxkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4
ODJERjYxQzdFOTk1RTAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyU2NyaXB0UHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3Qzg4MkRGQjFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNv
bnRlbnRXb3JsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElV
c2VyQ29udGVudFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4ODJE
RkMxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRXb3JsZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlw
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyU2NyaXB0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBB
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDODlEMjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElQYWdlQ29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODc0Niw4ICs4NzQzLDYgQEAKIAkJCQkxQTRE
NjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywKIAkJCQk1MUQxMjQzODFF
NkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lVGFzay5jcHAgKi8sCiAJCQkJNTFEMTI0Mzkx
RTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZVRhc2suaCAqLywKLQkJCQk3Qzg4MkRGQjFD
N0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAgKi8sCi0JCQkJN0M4ODJE
RkMxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCAqLywKIAkJCQk3Q0Iz
NjVBRjFEMzFERDFFMDA3MTU4Q0EgLyogQVBJVXNlckluaXRpYXRlZEFjdGlvbi5oICovLAogCQkJ
CTdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCAqLywKIAkJCQk3
Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovLApAQCAtMTAyMDEs
NyArMTAxOTYsNiBAQAogCQkJCUJDRTIzMTVEMTIyQzMwQ0EwMEQ1QzM1QSAvKiBBUElVUkxSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwQTFEMjEyMkRENTVFMDBDQzhDNTAgLyogQVBJ
VVJMUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBB
NyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDODgy
REZEMUM3RTk5QTgwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3Q0IzNjVCMTFEMzFERDFFMDA3MTU4Q0EgLyogQVBJVXNlckluaXRpYXRlZEFjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyOTQxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVz
ZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEODc4NjI0MUJEQjU4RkYwMEQwMkFCQiAv
KiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBX
ZWJVc2VyQ29udGVuCiAgICAgcmV0dXJuIGl0ZXJhdG9yID09IHdvcmxkTWFwKCkuZW5kKCkgPyBu
dWxscHRyIDogaXRlcmF0b3ItPnZhbHVlLmZpcnN0LmdldCgpOwogfQogCi12b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29u
dGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJ
ZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZCkKIHsKICAgICBBU1NFUlQod29ybGQuZmlyc3QpOwog
ICAgIGlmICh3b3JsZC5maXJzdCA9PSBwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQpAQCAt
MTE5LDEzICsxMTksMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJD
bwogICAgIH0pOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNv
bnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+PiYgd29ybGRzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENv
bnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVy
LCBTdHJpbmc+PiYgd29ybGRzKQogewogICAgIGZvciAoYXV0byYgd29ybGQgOiB3b3JsZHMpCi0g
ICAgICAgIGFkZFVzZXJDb250ZW50V29ybGQod29ybGQpOworICAgICAgICBhZGRDb250ZW50V29y
bGQod29ybGQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNl
ckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3Js
ZElkZW50aWZpZXJzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUNvbnRl
bnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+JiB3b3JsZElkZW50
aWZpZXJzKQogewogICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29ybGRJZGVudGlm
aWVycykgewogICAgICAgICBBU1NFUlQod29ybGRJZGVudGlmaWVyKTsKQEAgLTEzMyw3ICsxMzMs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiAKICAgICAgICAg
YXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgICAgICBpZiAo
aXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlp
bmcgdG8gcmVtb3ZlIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1
NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHVzZXJTY3JpcHREYXRhIDogdXNlclNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdv
cmxkTWFwKCkuZmluZCh1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJU
cnlpbmcgdG8gYWRkIGEgVXNlclNjcmlwdCB0byBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBS
SXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHVzZXJTY3JpcHREYXRhLndvcmxkSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIGFk
ZCBhIFVzZXJTY3JpcHQgdG8gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRv
ZXMgbm90IGV4aXN0LiIsIHVzZXJTY3JpcHREYXRhLndvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlCiB7CiAgICAgYXV0byBp
dCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSB3b3Js
ZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBh
IFVzZXJTY3JpcHQgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0
IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgVXNlclNjcmlwdCBmcm9tIGEgQ29udGVu
dFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsCiAgICAgZm9y
IChhdXRvJiB3b3JsZElkZW50aWZpZXIgOiB3b3JsZElkZW50aWZpZXJzKSB7CiAgICAgICAgIGF1
dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0
ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5n
IHRvIHJlbW92ZSBhbGwgVXNlclNjcmlwdHMgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUi
IFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNl
clNjcmlwdHMgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBu
b3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkVXNlclN0CiAgICAgZm9yIChjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVl
dERhdGEgOiB1c2VyU3R5bGVTaGVldHMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCku
ZmluZCh1c2VyU3R5bGVTaGVldERhdGEud29ybGRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0
ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5n
IHRvIGFkZCBhIFVzZXJTdHlsZVNoZWV0IHRvIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgdXNlclN0eWxlU2hlZXREYXRhLndvcmxkSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRv
IGFkZCBhIFVzZXJTdHlsZVNoZWV0IHRvIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikg
dGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU3R5bGVTaGVldERhdGEud29ybGRJZGVudGlmaWVy
LnRvVUludDY0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92
ZVVzZQogewogICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsK
ICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMo
IlRyeWluZyB0byByZW1vdmUgYSBVc2VyU3R5bGVTaGVldCBmcm9tIGEgVXNlckNvbnRlbnRXb3Js
ZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBV
c2VyU3R5bGVTaGVldCBmcm9tIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBk
b2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsCiAgICAgZm9yIChhdXRvJiB3b3JsZElkZW50aWZpZXIgOiB3b3Js
ZElkZW50aWZpZXJzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJ
ZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNlclN0eWxlU2hlZXRz
IGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBl
eGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTdHlsZVNoZWV0cyBmcm9tIGEgQ29udGVu
dFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
Mjc4LDcgKzI3OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2MK
ICAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpIHsKICAgICAg
ICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZChoYW5kbGVyLndvcmxkSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dB
bHdheXMoIlRyeWluZyB0byBhZGQgYSBVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgdG8gYSBVc2Vy
Q29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBoYW5k
bGVyLndvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiVHJ5aW5nIHRvIGFkZCBhIFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciB0byBhIENvbnRlbnRX
b3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgaGFuZGxlci53b3Js
ZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZVVzZQogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAgICAgYXV0byBpdCA9
IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSB3b3JsZE1h
cCgpLmVuZCgpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlciBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OnJlbW92ZUFsbAogICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29ybGRJ
ZGVudGlmaWVycykgewogICAgICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRl
bnRpZmllcik7CiAgICAgICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlciBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhp
c3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsOCArNjYsOCBAQCBwdWJs
aWM6CiAKICAgICBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZEZvcklkZW50aWZpZXIo
Q29udGVudFdvcmxkSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRz
KGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4m
KTsKLSAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGQoY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRX
b3JsZElkZW50aWZpZXIsIFN0cmluZz4mKTsKKyAgICB2b2lkIGFkZENvbnRlbnRXb3JsZHMoY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+PiYpOwor
ICAgIHZvaWQgYWRkQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVu
dGlmaWVyLCBTdHJpbmc+Jik7CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhWZWN0b3I8V2ViVXNl
clNjcmlwdERhdGE+JiYsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSk7CiAgICAgdm9pZCBh
ZGRVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFdlYlVzZXJTdHlsZVNoZWV0RGF0YT4mKTsK
ICAgICB2b2lkIGFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoY29uc3QgVmVjdG9yPFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4mKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZW1v
dmVVc2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4m
KTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3Js
ZElkZW50aWZpZXI+Jik7CiAKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHQoQ29udGVudFdvcmxk
SWRlbnRpZmllciwgdWludDY0X3QgdXNlclNjcmlwdElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+Jik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTI0LDggKzI0LDggQEAKICAqLwogCiBtZXNzYWdlcyAtPiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgewotICAgIEFkZFVzZXJDb250ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8V2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+PiB3b3JsZHMpOwotICAgIFJlbW92ZVVzZXJD
b250ZW50V29ybGRzKFZlY3RvcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxk
SWRlbnRpZmllcnMpOworICAgIEFkZENvbnRlbnRXb3JsZHMoVmVjdG9yPHN0ZDo6cGFpcjxXZWJL
aXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+IHdvcmxkcyk7CisgICAgUmVtb3Zl
Q29udGVudFdvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3Js
ZElkZW50aWZpZXJzKTsKIAogICAgIEFkZFVzZXJTY3JpcHRzKFZlY3RvcjxzdHJ1Y3QgV2ViS2l0
OjpXZWJVc2VyU2NyaXB0RGF0YT4gdXNlclNjcmlwdHMsIGVudW06Ym9vbCBXZWJLaXQ6OkluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSk7CiAgICAgUmVtb3ZlVXNlclNjcmlw
dChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgd29ybGRJZGVudGlmaWVyLCB1aW50NjRf
dCBpZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA3LDcgKzcwNyw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0ZXJhdG9yIDogcGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycykKICAgICAgICAg
cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwog
Ci0gICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50V29ybGRzKHBhcmFt
ZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5h
ZGRDb250ZW50V29ybGRzKHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMpOwogICAgIG1fdXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0cyhXVEZNb3ZlKHBhcmFtZXRlcnMudXNl
clNjcmlwdHMpLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKICAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXRzKHBhcmFtZXRlcnMudXNlclN0eWxl
U2hlZXRzKTsKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyhwYXJhbWV0ZXJzLm1lc3NhZ2VIYW5kbGVycyk7CkBAIC0zNDMyLDcgKzM0MzIs
NyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyCiAKIHZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRp
ZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50V29ybGQod29ybGREYXRhKTsK
KyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFdvcmxkKHdvcmxkRGF0YSk7
CiAgICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
d29ybGREYXRhLmZpcnN0LCBjYWxsYmFja0lEKTsKIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU3NTI1KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMjYg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBf
V0tVc2VyQ29udGVudFdvcmxkIHNob3VsZCBiZSBhIHdyYXBwZXIgYXJvdW5kIFdLQ29udGVudFdv
cmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgy
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbToKKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDIt
MjYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAg
VGVzdFdlYktpdEFQSSBhbmQgV2ViS2l0VGVzdFJ1bm5lciBzaG91bGQgaGF2ZSBidW5kbGUgaWRl
bnRpZmllcnMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNl
ckNvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE1IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNl
clN0eWxlU2hlZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotVEVTVChVc2VyQ29u
dGVudFdvcmxkLCBOb3JtYWxXb3JsZCkKK1RFU1QoQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZCkK
IHsKICAgICBSZXRhaW5QdHI8V0tVc2VyU2NyaXB0PiBiYXNpY1VzZXJTY3JpcHQgPSBhZG9wdE5T
KFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpAIiIgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6
WUVTXSk7Ci0gICAgRVhQRUNUX0VRKFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRd
LCBbX1dLVXNlckNvbnRlbnRXb3JsZCBub3JtYWxXb3JsZF0pOworICAgIEVYUEVDVF9ORShbYmFz
aWNVc2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxkXSwgW19XS1VzZXJDb250ZW50V29ybGQgbm9y
bWFsV29ybGRdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW2Jhc2ljVXNlclNjcmlwdCBfdXNlckNv
bnRlbnRXb3JsZF0ubmFtZSwgW19XS1VzZXJDb250ZW50V29ybGQgbm9ybWFsV29ybGRdLm5hbWUp
OwogICAgIEVYUEVDVF9OVUxMKFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdLm5h
bWUpOwogfQogCi1URVNUKFVzZXJDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkVXNlclNjcmlwdCkK
K1RFU1QoQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJTY3JpcHQpCiB7CiAgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC03NiwxNiArNzcsMTcgQEAg
VEVTVChVc2VyQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJTYwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotVEVTVChVc2VyQ29udGVudFdvcmxkLCBJc29s
YXRlZFdvcmxkKQorVEVTVChDb250ZW50V29ybGQsIElzb2xhdGVkV29ybGQpCiB7CiAgICAgUmV0
YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IGlzb2xhdGVkV29ybGQgPSBbX1dLVXNlckNvbnRl
bnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CiAgICAgRVhQRUNUX1dLX1NUUkVR
KFtpc29sYXRlZFdvcmxkIG5hbWVdLCBAIlRlc3RXb3JsZCIpOwogCiAgICAgUmV0YWluUHRyPFdL
VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIF9p
bml0V2l0aFNvdXJjZTpAIiIgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTIGxlZ2FjeVdoaXRlbGlzdDpAW10g
bGVnYWN5QmxhY2tsaXN0OkBbXSB1c2VyQ29udGVudFdvcmxkOmlzb2xhdGVkV29ybGQuZ2V0KCld
KTsKLSAgICBFWFBFQ1RfRVEoW3VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdLCBpc29sYXRl
ZFdvcmxkLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUoW3VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29y
bGRdLCBpc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3VzZXJTY3Jp
cHQgX3VzZXJDb250ZW50V29ybGRdLm5hbWUsIFtpc29sYXRlZFdvcmxkIG5hbWVdKTsKIH0KIAot
VEVTVChVc2VyQ29udGVudFdvcmxkLCBJc29sYXRlZFdvcmxkVXNlclNjcmlwdCkKK1RFU1QoQ29u
dGVudFdvcmxkLCBJc29sYXRlZFdvcmxkVXNlclNjcmlwdCkKIHsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391807</attachid>
            <date>2020-02-26 16:39:02 -0800</date>
            <delta_ts>2020-02-26 16:49:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208274-20200226163901.patch</filename>
            <type>text/plain</type>
            <size>86048</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0wMi0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIF9XS1VzZXJDb250
ZW50V29ybGQgc2hvdWxkIGJlIGEgd3JhcHBlciBhcm91bmQgV0tDb250ZW50V29ybGQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgU1BJcyB3
ZXJlIGdldHRpbmcgY29uZnVzZWQgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBVcGRhdGVkIEFQ
SSB0ZXN0cyB3aGljaCBleHBlY3RlZCBwb2ludGVyIGVxdWFsaXR5LCB3aGljaCBpcyBubyBsb25n
ZXIgdHJ1ZSBvciBpbXBvcnRhbnQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6Q29udGVu
dFdvcmxkQmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
V29ybGQuaDoKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6aWRlbnRpZmllciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZEJhc2U6Om5hbWUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjp3b3JsZERhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjpDb250ZW50V29y
bGRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRXb3JsZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6VXNl
clN0eWxlU2hlZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAo
V0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVz
ZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
OgorICAgICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
V29ybGQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2VyU2NyaXB0
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNl
ckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX2Fk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVn
YWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50V29ybGQgX2luaXRXaXRoTmFtZTpdKToKKyAgICAgICAgKC1bX1dLVXNl
ckNvbnRlbnRXb3JsZCBfaW5pdF0pOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudFdvcmxkIF9p
bml0V2l0aENvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKCtbX1dLVXNlckNvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdv
cmxkXSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50V29ybGQgbmFtZV0pOgorICAgICAgICAo
LVtfV0tVc2VyQ29udGVudFdvcmxkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRXb3JsZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVT
aGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dL
VXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0
ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6Ondvcmxk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUNvbnRlbnRXb3JsZFVzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJDb250ZW50V29ybGRVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29u
dGVudFdvcmxkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlckNvbnRlbnRXb3JsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9wcm9jZXNzRGlzcGxheU5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCk6CisKIDIwMjAtMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEFsbG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nl
c3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjU3MzY5KQorKysgU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw2IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW8KIFVJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAotVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKLSAgICAgICAgVXNlckNvbnRlbnRXb3JsZCwKICAg
ICAgICAgVXNlckluaXRpYXRlZEFjdGlvbiwKICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLAogICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUx
LDEyICszNTEsNiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwCiAg
ICAgICAgIHdyYXBwZXIgPSBbV0tDb250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgVHlwZTo6VXNlckNvbnRlbnRXb3JsZDoKLSAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVu
dFdvcmxkIGFsbG9jXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBUeXBlOjpVc2VySW5pdGlhdGVkQWN0aW9uOgog
ICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJJbml0aWF0ZWRBY3Rpb24gYWxsb2NdOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29y
bGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAK
LSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxk
U2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCi1Db250ZW50V29ybGRCYXNlOjpDb250
ZW50V29ybGRCYXNlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorQ29udGVudFdvcmxkOjpDb250
ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCiAgICAgOiBtX25hbWUobmFtZSkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKQEAgLTc2LDIxICs3NSw2IEBAIENvbnRl
bnRXb3JsZCYgQ29udGVudFdvcmxkOjpkZWZhdWx0Q2xpZW4KICAgICByZXR1cm4gKndvcmxkLmdl
dCgpOwogfQogCi1Db250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2UobmFtZSkKLXsKLX0KLQotQ29udGVudFdvcmxk
OjpDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKGlkZW50aWZpZXIpCi17Ci19Ci0KLUNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKHVzZXJDb250ZW50V29ybGQuaWRlbnRpZmllcigpLCB1
c2VyQ29udGVudFdvcmxkLm5hbWUoKSkKLXsKLX0KLQogQ29udGVudFdvcmxkOjp+Q29udGVudFdv
cmxkKCkKIHsKICAgICBpZiAobmFtZSgpLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaAkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwzMiArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgVXNlckNv
bnRlbnRXb3JsZDsKLQotY2xhc3MgQ29udGVudFdvcmxkQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+Q29udGVudFdvcmxkQmFzZSgpID0gZGVmYXVsdDsKLQotICAgIFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KLSAgICBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBXVEY6OlN0
cmluZz4gd29ybGREYXRhKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIENvbnRlbnRXb3JsZEJhc2Uo
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgfQotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpDb250ZW50V29y
bGRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbmFtZShuYW1lKSB7IH0K
LXByaXZhdGU6Ci0gICAgV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKLSAgICBXVEY6OlN0cmluZyBtX25hbWU7Ci19OwotCi1jbGFzcyBDb250ZW50V29ybGQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29y
bGQ+LCBwdWJsaWMgQ29udGVudFdvcmxkQmFzZSB7CitjbGFzcyBDb250ZW50V29ybGQgZmluYWwg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbnRlbnRXb3JsZD4gc2hhcmVkV29ybGRXaXRo
TmFtZShjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBDb250ZW50V29ybGQmIHBhZ2VD
b250ZW50V29ybGQoKTsKQEAgLTY0LDEzICszOSwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5Db250ZW50V29ybGQoKTsKIAotICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBPYmplY3RJ
bXBsOjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IE9iamVjdEltcGw6
OmRlcmVmKCk7IH0KKyAgICBXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgc3RkOjpwYWlyPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IENvbnRl
bnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIpOwotICAgIGV4cGxpY2l0IENv
bnRlbnRXb3JsZChjb25zdCBVc2VyQ29udGVudFdvcmxkJik7CisgICAgZXhwbGljaXQgQ29udGVu
dFdvcmxkKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KKworICAgIFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV1RGOjpTdHJpbmcgbV9uYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRX
b3JsZFNoYXJlZC5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLQotUmVmPFVzZXJDb250ZW50V29ybGQ+
IFVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRXb3JsZChuYW1lKSk7Ci19
Ci0KLVJlZjxVc2VyQ29udGVudFdvcmxkPiBVc2VyQ29udGVudFdvcmxkOjpmcm9tQ29udGVudFdv
cmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxkKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVzZXJDb250ZW50V29ybGQoY29udGVudFdvcmxkKSk7Ci19Ci0KLVVzZXJDb250
ZW50V29ybGQmIFVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkKLXsKLSAgICBzdGF0aWMg
VXNlckNvbnRlbnRXb3JsZCogd29ybGQgPSBuZXcgVXNlckNvbnRlbnRXb3JsZChGb3JOb3JtYWxX
b3JsZE9ubHk6Ok5vcm1hbFdvcmxkKTsKLSAgICByZXR1cm4gKndvcmxkOwotfQotCi1Vc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAg
IDogQ29udGVudFdvcmxkQmFzZShuYW1lKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjpVc2Vy
Q29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2Uo
V2ViS2l0OjpwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQotewotfQotCi1Vc2VyQ29udGVu
dFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxk
KQotICAgIDogQ29udGVudFdvcmxkQmFzZShjb250ZW50V29ybGQuaWRlbnRpZmllcigpLCBjb250
ZW50V29ybGQubmFtZSgpKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjp+VXNlckNvbnRlbnRX
b3JsZCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBVc2VyQ29udGVudFdvcmxkIGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRl
bnRXb3JsZD4sIHB1YmxpYyBDb250ZW50V29ybGRCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmKTsK
LSAgICBzdGF0aWMgVXNlckNvbnRlbnRXb3JsZCYgbm9ybWFsV29ybGQoKTsKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IGZyb21Db250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxk
Jik7Ci0KLSAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudFdvcmxkKCk7Ci0KLSAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgT2JqZWN0SW1wbDo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBPYmplY3RJbXBsOjpkZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgVXNlckNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IFVz
ZXJDb250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxkJik7Ci0KLSAgICBlbnVtIGNsYXNzIEZv
ck5vcm1hbFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07Ci0gICAgZXhwbGljaXQgVXNlckNvbnRl
bnRXb3JsZChGb3JOb3JtYWxXb3JsZE9ubHkpOwotCi19OwotCi19IC8vIG5hbWVzcGFjZSBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAJ
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDEwIEBAIFdURjo6VVJMIFVz
ZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKICAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJp
bmcoInVzZXItc2NyaXB0OiIsICsraWRlbnRpZmllcikgfTsKIH0KIAotVXNlclNjcmlwdDo6VXNl
clNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCitVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91c2VyU2NyaXB0
KHVzZXJTY3JpcHQpCiAgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCi0KIH0gLy8gbmFtZXNw
YWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclNjcmlwdC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2LDIxICsz
NiwyMSBAQCBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6
CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGljIFJlZjxVc2VyU2NyaXB0PiBj
cmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYg
d29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdU
Rk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAgICAgfQogCi0gICAgVXNlclNjcmlwdChXZWJD
b3JlOjpVc2VyU2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBVc2VyU2NyaXB0
KFdlYkNvcmU6OlVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0OyB9CiAgICAgCi0gICAgVXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgpIHsg
cmV0dXJuIG1fd29ybGQ7IH0KLSAgICBjb25zdCBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVu
dFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIENvbnRlbnRXb3JsZCYgY29u
dGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIGNvbnN0IENvbnRlbnRXb3JsZCYg
Y29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IG1fdXNlclNjcmlwdDsKLSAgICBSZWY8VXNlckNvbnRl
bnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgV1RGOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VQogICAgIHJldHVybiB7IHsgfSwgbWFrZVN0cmluZygidXNlci1zdHlsZS1zaGVldDoiLCArK2lk
ZW50aWZpZXIpIH07CiB9CiAKLVVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKK1VzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91
c2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2
LDIxICszNiwyMSBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplCiBw
dWJsaWM6CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
dXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGlj
IFJlZjxVc2VyU3R5bGVTaGVldD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJT
dHlsZVNoZWV0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5bGVTaGVldChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSwg
d29ybGQpKTsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CiAKLSAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxk
KCkgeyByZXR1cm4gbV93b3JsZDsgfQotICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJD
b250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgQ29udGVudFdvcmxk
JiBjb250ZW50V29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgY29uc3QgQ29udGVudFdv
cmxkJiBjb250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgbV91c2VyU3R5bGVTaGVldDsKLSAgICBSZWY8
VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29u
dGVudFJ1bGVMaXN0LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1
ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oIgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxl
U2hlZXQoV0tQYWdlCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQ
YXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJucyk7CiAKLSAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQgPSBB
UEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3Vy
Y2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6ICBVUkwoVVJM
KCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3Rv
cigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+
IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJs
YW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRl
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJs
YWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHRv
SW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQ
YWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRv
SW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNl
clNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdU
Rk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVj
dG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmpl
Y3RlZEZyYW1lcykgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAg
ICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYg
V0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25s
eSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVz
ZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNl
UmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVc2VyU2NyaXB0Q29weVNvdXJjZShXS1VzZXJTY3JpcHRSZWYg
dXNlclNjcmlwdFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKF9XS1VzZXJDb250ZW50V29ybGQgKilfdXNl
ckNvbnRlbnRXb3JsZAogewotICAgIHJldHVybiBbW3dyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpmcm9tQ29udGVudFdvcmxkKCpfY29udGVudFdvcmxkKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENv
bnRlbnRXb3JsZDpzZWxmXSBhdXRvcmVsZWFzZV07CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgog
CisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgotI2ltcG9ydCAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2ltcG9ydCAiSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdElu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE0NiwxNCArMTQ3LDE0IEBAIHByaXZhdGU6CiAK
IC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNv
bnRlbnRXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0
byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJl
YWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFu
ZGxlckZvck5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIF91c2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCkBAIC0xNzUsNyArMTc2LDcgQEAgLSAodm9pZClfcmVtb3Zl
VXNlclNjcmlwdDooV0tVc2VyU2NyaXB0IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewotICAg
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJD
b250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCkBAIC0yMjgsMjQgKzIyOSwyNCBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtICh2b2lkKV9yZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1Vz
ZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKnVzZXJDb250ZW50V29ybGQt
Pl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNT
dHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRX
b3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVz
ZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogICAgIGlmICgh
X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQog
CiAtICh2b2lkKV9yZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRX
b3JsZAogewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29y
bGQpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX3JlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVy
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92
ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdv
cmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJNZXNz
YWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29y
bGQpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9
LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRl
bnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDE0ICs5NCwxNCBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNj
cmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJs
YWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1l
cyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29u
dGVudFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPnVzZXJDb250ZW50
V29ybGQoKSk7CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0
V2l0aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1
dG9yZWxlYXNlXTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRXb3JsZC5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDM4ICsyNiw1OCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29u
dGVudFdvcmxkSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
IgorCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0
aW9uIF9XS1VzZXJDb250ZW50V29ybGQKIAotKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxk
V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE5hbWU6
KE5TU3RyaW5nICopbmFtZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6d29ybGRXaXRoTmFtZShuYW1lKSk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfY29udGVudFdvcmxkID0gW1dLQ29udGVu
dFdvcmxkIHdvcmxkV2l0aE5hbWU6bmFtZV07CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKF9X
S1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAorLSAoaW5zdGFuY2V0eXBlKV9pbml0CiB7
Ci0gICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9jb250ZW50V29ybGQgPSBbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXTsKKyAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgX3VzZXJDb250
ZW50V29ybGQtPn5Vc2VyQ29udGVudFdvcmxkKCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAg
X2NvbnRlbnRXb3JsZCA9IHdvcmxkOworICAgIHJldHVybiBzZWxmOworfQorCisrIChfV0tVc2Vy
Q29udGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0
dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0gYXV0
b3JlbGVhc2VdOworfQorCisrIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQKK3sK
KyAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdIGF1dG9yZWxl
YXNlXTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgaWYgKF91c2VyQ29udGVudFdv
cmxkLmdldCgpID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF91c2VyQ29udGVudFdvcmxkLT5uYW1lKCk7Cisg
ICAgcmV0dXJuIFtfY29udGVudFdvcmxkIG5hbWVdOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmpl
Y3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
IHsKLSAgICByZXR1cm4gKl91c2VyQ29udGVudFdvcmxkOworICAgIHJldHVybiBbX2NvbnRlbnRX
b3JsZCBfYXBpT2JqZWN0XTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50
ZXJuYWwuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwyMCArMjUsNyBAQAogCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkLmgiCiAKLSNpbXBv
cnQgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCi0jaW1wb3J0
IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpVc2Vy
Q29udGVudFdvcmxkPiB7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tVc2VyQ29udGVudFdvcmxkOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfTsKLQotfQorQGNsYXNzIFdLQ29udGVudFdv
cmxkOwogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNjIsNiArNDksNyBAQCBpbmxpbmUgVmVjdG9y
PFdURjo6U3RyaW5nPiB0b1N0cmluZ1ZlY3RvCiAKIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRlbnRX
b3JsZCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gX3VzZXJDb250ZW50V29ybGQ7CisgICAgUmV0YWluUHRyPFdL
Q29udGVudFdvcmxkPiBfY29udGVudFdvcmxkOwogfQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aENvbnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIEBlbmQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6
IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZv
cmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hv
dWxkIHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6
OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZy
YW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0
SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250
ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9w
RnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHls
ZVVzZXJMZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtNTYsNyArNTYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2Ug
Y2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNv
bnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwog
ICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25z
dHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5l
cmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQ
STo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdl
YkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMs
IFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJD
b250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpV
c2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmlu
Zyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6
OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVn
YWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3Js
ZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRl
c3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9i
amVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxs
eSBiZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3Ry
aW5nKFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3Ry
aW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5Qmxh
Y2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5
IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZl
bCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpT
dHJpbmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9T
dHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lC
bGFja2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9u
bHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxl
dmVsIH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNwcAkocmV2aXNpb24gMjU3MzY5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgKi8KIAogCi1BUEk6OlVzZXJDb250ZW50V29ybGQmIHdlYmtpdFVzZXJDb250ZW50
V29ybGQoY29uc3QgY2hhciogd29ybGROYW1lKQorQVBJOjpDb250ZW50V29ybGQmIHdlYmtpdENv
bnRlbnRXb3JsZChjb25zdCBjaGFyKiB3b3JsZE5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hNYXA8Q1N0cmluZywgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+PiBt
YXA7Ci0gICAgcmV0dXJuICptYXAuZ2V0KCkuZW5zdXJlKHdvcmxkTmFtZSwgW3dvcmxkTmFtZSA9
IFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKV0geyByZXR1cm4gQVBJOjpVc2VyQ29udGVudFdv
cmxkOjp3b3JsZFdpdGhOYW1lKHdvcmxkTmFtZSk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxDU3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50
V29ybGQ+Pj4gbWFwOworICAgIHJldHVybiAqbWFwLmdldCgpLmVuc3VyZSh3b3JsZE5hbWUsIFt3
b3JsZE5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSldIHsKKyAgICAgICAgcmV0dXJu
IEFQSTo6Q29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKHdvcmxkTmFtZSk7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiBzdGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKFdlYktpdFVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCkBAIC05NSw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWMKIH0KIAogc3RydWN0IF9XZWJLaXRVc2VyU3R5
bGVTaGVldCB7Ci0gICAgX1dlYktpdFVzZXJTdHlsZVNoZWV0KGNvbnN0IGdjaGFyKiBzb3VyY2Us
IFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVz
ZXJTdHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBj
aGFyKiBjb25zdCogYmxhY2tsaXN0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQorICAg
IF9XZWJLaXRVc2VyU3R5bGVTaGVldChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBs
ZXZlbCwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJs
YWNrbGlzdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgICAgICA6IHVzZXJTdHlsZVNo
ZWV0KGFkb3B0UmVmKG5ldyBBUEk6OlVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0IHsKICAg
ICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoc291cmNlKSwgVVJMIHsgfSwKICAgICAgICAgICAg
IHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksCkBA
IC0xNzEsNyArMTczLDcgQEAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxl
XwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgV2Vi
S2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNl
clN0eWxlU2hlZXQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRVc2VyU3R5bGVTaGVldCkpKTsK
LSAgICBuZXcgKHVzZXJTdHlsZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGlu
amVjdGVkRnJhbWVzLCBsZXZlbCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0
VXNlclN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlzdCwg
YmxhY2tsaXN0LCBBUEk6OkNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJu
IHVzZXJTdHlsZVNoZWV0OwogfQogCkBAIC0xOTcsNyArMTk5LDcgQEAgV2ViS2l0VXNlclN0eWxl
U2hlZXQqIHdlYmtpdF91c2VyX3N0eWxlXwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdvcmxk
TmFtZSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hl
ZXQgPSBzdGF0aWNfY2FzdDxXZWJLaXRVc2VyU3R5bGVTaGVldCo+KGZhc3RNYWxsb2Moc2l6ZW9m
KFdlYktpdFVzZXJTdHlsZVNoZWV0KSkpOwotICAgIG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktp
dFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3Qs
IGJsYWNrbGlzdCwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICBuZXcg
KHVzZXJTdHlsZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGluamVjdGVkRnJh
bWVzLCBsZXZlbCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIHdlYmtpdENvbnRlbnRXb3JsZCh3b3Js
ZE5hbWUpKTsKICAgICByZXR1cm4gdXNlclN0eWxlU2hlZXQ7CiB9CiAKQEAgLTIwNyw3ICsyMDks
NyBAQCBBUEk6OlVzZXJTdHlsZVNoZWV0JiB3ZWJraXRVc2VyU3R5bGVTaGVlCiB9CiAKIHN0cnVj
dCBfV2ViS2l0VXNlclNjcmlwdCB7Ci0gICAgX1dlYktpdFVzZXJTY3JpcHQoY29uc3QgZ2NoYXIq
IHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywg
V2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgY29uc3QgZ2NoYXIq
IGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxhY2tsaXN0LCBBUEk6OlVz
ZXJDb250ZW50V29ybGQmIHdvcmxkKQorICAgIF9XZWJLaXRVc2VyU2NyaXB0KGNvbnN0IGdjaGFy
KiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMs
IFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGNvbnN0IGdjaGFy
KiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBnY2hhciogY29uc3QqIGJsYWNrbGlzdCwgQVBJOjpD
b250ZW50V29ybGQmIHdvcmxkKQogICAgICAgICA6IHVzZXJTY3JpcHQoYWRvcHRSZWYobmV3IEFQ
STo6VXNlclNjcmlwdChVc2VyU2NyaXB0IHsKICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgo
c291cmNlKSwgVVJMIHsgfSwKICAgICAgICAgICAgIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCks
IHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksCkBAIC0yODMsNyArMjg1LDcgQEAgV2ViS2l0VXNl
clNjcmlwdCogd2Via2l0X3VzZXJfc2NyaXB0X25ldwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgV2ViS2l0VXNlclNjcmlwdCogdXNlclNjcmlwdCA9
IHN0YXRpY19jYXN0PFdlYktpdFVzZXJTY3JpcHQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRV
c2VyU2NyaXB0KSkpOwotICAgIG5ldyAodXNlclNjcmlwdCkgV2ViS2l0VXNlclNjcmlwdChzb3Vy
Y2UsIGluamVjdGVkRnJhbWVzLCBpbmplY3Rpb25UaW1lLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwg
QVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBuZXcgKHVzZXJTY3Jp
cHQpIFdlYktpdFVzZXJTY3JpcHQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgaW5qZWN0aW9uVGlt
ZSwgd2hpdGVsaXN0LCBibGFja2xpc3QsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdv
cmxkKCkpOwogICAgIHJldHVybiB1c2VyU2NyaXB0OwogfQogCkBAIC0zMDksNyArMzExLDcgQEAg
V2ViS2l0VXNlclNjcmlwdCogd2Via2l0X3VzZXJfc2NyaXB0X25ldwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHdvcmxkTmFtZSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRVc2VyU2NyaXB0KiB1
c2VyU2NyaXB0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNlclNjcmlwdCo+KGZhc3RNYWxsb2Moc2l6
ZW9mKFdlYktpdFVzZXJTY3JpcHQpKSk7Ci0gICAgbmV3ICh1c2VyU2NyaXB0KSBXZWJLaXRVc2Vy
U2NyaXB0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVjdGlvblRpbWUsIHdoaXRlbGlzdCwg
YmxhY2tsaXN0LCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgIG5ldyAo
dXNlclNjcmlwdCkgV2ViS2l0VXNlclNjcmlwdChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBpbmpl
Y3Rpb25UaW1lLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgd2Via2l0Q29udGVudFdvcmxkKHdvcmxk
TmFtZSkpOwogICAgIHJldHVybiB1c2VyU2NyaXB0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzOSw3ICsyMzksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIs
IG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5v
cm1hbFdvcmxkKCkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1h
a2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6
ZnJvbVVURjgobmFtZSksIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwog
ICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3
IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3VucmVnaXMKIHsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUihtYW5hZ2VyKSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChuYW1lKTsKLSAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVu
dENvbnRyb2xsZXItPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoU3RyaW5nOjpmcm9t
VVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBt
YW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJNZXNzYWdlSGFu
ZGxlckZvck5hbWUoU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CiB9CiAKIC8qKgpAQCAtMjg5LDcgKzI4OSw3IEBAIGdib29sZWFu
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWcKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bCh3b3JsZE5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4g
aGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVu
aXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9t
VVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICAgICAg
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VD
bGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRD
b250ZW50V29ybGQod29ybGROYW1lKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0
KCkpOwogfQogCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21h
bmFnZXJfdW5yZWdpcwogICAgIGdfcmV0dXJuX2lmX2ZhaWwobmFtZSk7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbCh3b3JsZE5hbWUpOwogCi0gICAgbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250
cm9sbGVyLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKFN0cmluZzo6ZnJvbVVURjgo
bmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgbWFuYWdlci0+
cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JO
YW1lKFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdENvbnRlbnRXb3JsZCh3b3JsZE5hbWUp
KTsKIH0KIAogLyoqCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVc2VyQ29udGVudFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaAkocmV2aXNpb24gMjU3MzY5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZpbmUgV2ViS2l0
VXNlckNvbnRlbnRQcml2YXRlX2gKIAogI2luY2x1ZGUgIkFQSUNvbnRlbnRSdWxlTGlzdC5oIgot
I2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNpbmNsdWRlICJBUElDb250ZW50V29y
bGQuaCIKICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxl
U2hlZXQuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgpAQCAtMzAsNyArMzAsNyBA
QAogCiBBUEk6OlVzZXJTY3JpcHQmIHdlYmtpdFVzZXJTY3JpcHRHZXRVc2VyU2NyaXB0KFdlYktp
dFVzZXJTY3JpcHQqKTsKIEFQSTo6VXNlclN0eWxlU2hlZXQmIHdlYmtpdFVzZXJTdHlsZVNoZWV0
R2V0VXNlclN0eWxlU2hlZXQoV2ViS2l0VXNlclN0eWxlU2hlZXQqKTsKLUFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd2Via2l0VXNlckNvbnRlbnRXb3JsZChjb25zdCBjaGFyKik7CitBUEk6OkNvbnRl
bnRXb3JsZCYgd2Via2l0Q29udGVudFdvcmxkKGNvbnN0IGNoYXIqKTsKIEFQSTo6Q29udGVudFJ1
bGVMaXN0JiB3ZWJraXRVc2VyQ29udGVudEZpbHRlckdldENvbnRlbnRSdWxlTGlzdChXZWJLaXRV
c2VyQ29udGVudEZpbHRlciopOwogV2ViS2l0VXNlckNvbnRlbnRGaWx0ZXIqIHdlYmtpdFVzZXJD
b250ZW50RmlsdGVyQ3JlYXRlKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4mJik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAJKHJldmlz
aW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyAr
MjIsNyBAQAogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJBUElV
c2VyQ29udGVudFdvcmxkLmgiCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RXJyb3IuaCIKICNpbmNsdWRlICJXZWJLaXROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24uaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXJQcml2YXRlLmgiCkBAIC03
Myw3ICs3Myw3IEBAIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6flJlbW90ZUkKICAg
ICAgICAgZ19vYmplY3Rfd2Vha191bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRf
Y2FzdDxHV2Vha05vdGlmeT4od2ViVmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChh
dXRvKiB1c2VyQ29udGVudE1hbmFnZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAg
ICAgd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
dXNlckNvbnRlbnRNYW5hZ2VyKS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5z
cGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAg
d2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNl
ckNvbnRlbnRNYW5hZ2VyKS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVj
dG9yIiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdf
b2JqZWN0X3dlYWtfdW5yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnBy
ZXRfY2FzdDxHV2Vha05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7
CiAgICAgfQogfQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjpoYW4KICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNv
bnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVu
dE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkg
ewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVy
ID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3Nh
Z2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29u
dGVudFdvcmxkKCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdf
T0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+
KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAJKHJldmlzaW9u
IDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAKKyNpbmNsdWRlICJBUElD
b250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uLmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYQogICAgIG1faW5zcGVjdG9yQ2xpZW50ID0g
bWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwsICp0aGlzKTsKIAog
ICAgIC8vIFNldHVwIHRhcmdldCBwb3N0TWVzc2FnZSBsaXN0ZW5lcgotICAgIGF1dG8gaGFuZGxl
ciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNz
YWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5v
cm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
OjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0
b3IiLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICBwYWdlUHJv
eHkucGFnZUdyb3VwKCkudXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogCiAgICAgLy8gU2V0dXAgbG9hZGVyIGNsaWVudCB0
byBnZXQgbm90aWZpZWQgb2YgcGFnZSBsb2FkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE2ICsyNiwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyLmgiCiAKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisjaW5j
bHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
Ojp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZCYgd29ybGQpCitSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihXVEZNb3ZlKGNsaWVu
dCksIG5hbWUsIHdvcmxkKSk7CiB9CiAKLVdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKK1dlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50
PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQog
ICAgIDogbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAg
LCBtX3dvcmxkKHdvcmxkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCShyZXZpc2lv
biAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1ZGUg
IkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiB9CiAK
IG5hbWVzcGFjZSBBUEkgewotY2xhc3MgVXNlckNvbnRlbnRXb3JsZDsKK2NsYXNzIENvbnRlbnRX
b3JsZDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSwyMSArNTUsMjEgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5JiwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSA9IDA7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGNyZWF0ZShzdGQ6
OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250ZW50
V29ybGQmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBjcmVhdGUo
c3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpDb250ZW50
V29ybGQmKTsKICAgICB2aXJ0dWFsIH5XZWJTY3JpcHRNZXNzYWdlSGFuZGxlcigpOwogCiAgICAg
U3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIEFQSTo6Q29udGVu
dFdvcmxkQmFzZSYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CisgICAgQVBJOjpD
b250ZW50V29ybGQmIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQogCiAgICAgQ2xp
ZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jbGllbnQ7IH0KIAogcHJpdmF0ZToKLSAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3Qg
U3RyaW5nJiwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4sIGNvbnN0IFN0cmluZyYsIEFQSTo6Q29udGVu
dFdvcmxkJik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBtX2NsaWVudDsKICAgICBT
dHJpbmcgbV9uYW1lOwotICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IG1fd29ybGQ7Cisg
ICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCShyZXZp
c2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxk
LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJT
Y3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKQEAgLTEwNCwxNyArMTAzLDE3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZFAKICAgICBpZiAobV9wcm9jZXNzZXMuYWRkKHdlYlByb2Nlc3NQcm94
eSkuaXNOZXdFbnRyeSkKICAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CiAKLSAgICBBU1NFUlQocGFyYW1ldGVycy51
c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvbnRl
bnRXb3JsZHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHdvcmxkIDogbV9jb250
ZW50V29ybGRzKQogICAgICAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmFwcGVuZCh3
b3JsZC5rZXktPndvcmxkRGF0YSgpKTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJTY3Jp
cHRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChhdXRvIHVzZXJTY3JpcHQgOiBtX3VzZXJTY3JpcHRz
LT5lbGVtZW50c09mVHlwZTxBUEk6OlVzZXJTY3JpcHQ+KCkpCi0gICAgICAgIHBhcmFtZXRlcnMu
dXNlclNjcmlwdHMuYXBwZW5kKHsgdXNlclNjcmlwdC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LT51c2VyQ29udGVudFdvcmxkKCkuaWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LT51c2VyU2NyaXB0
KCkgfSk7CisgICAgICAgIHBhcmFtZXRlcnMudXNlclNjcmlwdHMuYXBwZW5kKHsgdXNlclNjcmlw
dC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKS5pZGVudGlmaWVyKCks
IHVzZXJTY3JpcHQtPnVzZXJTY3JpcHQoKSB9KTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVz
ZXJTdHlsZVNoZWV0cy5pc0VtcHR5KCkpOwogICAgIGZvciAoYXV0byB1c2VyU3R5bGVTaGVldCA6
IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50c09mVHlwZTxBUEk6OlVzZXJTdHlsZVNoZWV0Pigp
KQotICAgICAgICBwYXJhbWV0ZXJzLnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQoeyB1c2VyU3R5bGVT
aGVldC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpLmlk
ZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkgfSk7CisgICAgICAg
IHBhcmFtZXRlcnMudXNlclN0eWxlU2hlZXRzLmFwcGVuZCh7IHVzZXJTdHlsZVNoZWV0LT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LT5jb250ZW50V29ybGQoKS5pZGVudGlmaWVyKCksIHVz
ZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpIH0pOwogCiAgICAgQVNTRVJUKHBhcmFtZXRl
cnMubWVzc2FnZUhhbmRsZXJzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChhdXRvJiBoYW5kbGVyIDog
bV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMudmFsdWVzKCkpCkBAIC0xNDYsMjEgKzE0NSwyMSBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAgICAgd2ViUHJvY2Vzc1By
b3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShB
UEk6OkNvbnRlbnRXb3JsZEJhc2UmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6YWRkQ29udGVudFdvcmxkVXNlKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsK
LSAgICBpZiAoJndvcmxkID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
CisgICAgaWYgKCZ3b3JsZCA9PSAmQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2NvbnRlbnRXb3Js
ZHMuYWRkKCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29y
bGRzKHsgd29ybGQud29ybGREYXRhKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBw
cm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVu
dFdvcmxkcyh7IHdvcmxkLndvcmxkRGF0YSgpIH0pLCBpZGVudGlmaWVyKCkpOwogICAgIH0KIH0K
IAotYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZVVz
ZXJDb250ZW50V29ybGRzTWVzc2FnZShBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkLCB1bnNp
Z25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSkKK2Jvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnNob3VsZFNlbmRSZW1vdmVDb250ZW50V29ybGRzTWVzc2FnZShBUEk6OkNvbnRlbnRX
b3JsZCYgd29ybGQsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKQogewotICAgIGlmICgm
d29ybGQgPT0gJkFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSkKKyAgICBpZiAo
JndvcmxkID09ICZBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGl0ID0gbV9jb250ZW50V29ybGRzLmZpbmQoJndv
cmxkKTsKQEAgLTE3NCwzMSArMTczLDMxIEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnNob3UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKQordm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFdvcmxkVXNlcyhBUEk6OkNv
bnRlbnRXb3JsZCYgd29ybGQsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKQogewotICAg
IGlmIChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKHdvcmxkLCBudW1i
ZXJPZlVzZXNUb1JlbW92ZSkpIHsKKyAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3Js
ZHNNZXNzYWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMo
eyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBwcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVu
dFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9
CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50
V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiYg
d29ybGRzKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVu
dFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGQ+PiYgd29y
bGRzKQogewogICAgIFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZHNUb1JlbW92
ZTsKICAgICBmb3IgKGF1dG8mIHdvcmxkVXNlUGFpciA6IHdvcmxkcykgewotICAgICAgICBpZiAo
c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZSgqd29ybGRVc2VQYWlyLmtl
eS5nZXQoKSwgd29ybGRVc2VQYWlyLnZhbHVlKSkKKyAgICAgICAgaWYgKHNob3VsZFNlbmRSZW1v
dmVDb250ZW50V29ybGRzTWVzc2FnZSgqd29ybGRVc2VQYWlyLmtleS5nZXQoKSwgd29ybGRVc2VQ
YWlyLnZhbHVlKSkKICAgICAgICAgICAgIHdvcmxkc1RvUmVtb3ZlLmFwcGVuZCh3b3JsZFVzZVBh
aXIua2V5LT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBp
ZGVudGlmaWVyKCkpOworICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50
aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkgaW1tZWRpYXRlbHkpCiB7Ci0gICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4g
d29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKKyAgICBSZWY8QVBJOjpDb250
ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC5jb250ZW50V29ybGQoKTsKIAotICAgIGFkZFVz
ZXJDb250ZW50V29ybGRVc2Uod29ybGQuZ2V0KCkpOworICAgIGFkZENvbnRlbnRXb3JsZFVzZSh3
b3JsZC5nZXQoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNl
clNjcmlwdCk7CiAKQEAgLTIwOCwzMyArMjA3LDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmFkZFUKIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCiB7Ci0gICAgUmVm
PEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29y
bGQoKTsKKyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC5jb250
ZW50V29ybGQoKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQogICAg
ICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIo
KSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJlbW92
ZUFsbCgmdXNlclNjcmlwdCk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3Js
ZC5nZXQoKSwgMSk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZC5nZXQoKSwgMSk7
CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJT
Y3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OkNvbnRlbnRXb3JsZCYg
d29ybGQpCiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCiAgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAog
ICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3ZlZCA9IG1fdXNlclNjcmlwdHMtPnJlbW92ZUFs
bE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTY3Jp
cHQpIHsKLSAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxkKCkgPT0g
JndvcmxkOworICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpID09ICZ3
b3JsZDsKICAgICB9KTsKIAotICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCB1
c2VyU2NyaXB0c1JlbW92ZWQpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMod29ybGQsIHVz
ZXJTY3JpcHRzUmVtb3ZlZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKIHsKLSAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8
QVBJOjpVc2VyQ29udGVudFdvcmxkPj4gd29ybGRzOworICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0
cjxBUEk6OkNvbnRlbnRXb3JsZD4+IHdvcmxkczsKICAgICBmb3IgKGF1dG8gdXNlclNjcmlwdCA6
IG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6VXNlclNjcmlwdD4oKSkKLSAgICAg
ICAgd29ybGRzLmFkZChjb25zdF9jYXN0PEFQSTo6VXNlckNvbnRlbnRXb3JsZCo+KCZ1c2VyU2Ny
aXB0LT51c2VyQ29udGVudFdvcmxkKCkpKTsKKyAgICAgICAgd29ybGRzLmFkZChjb25zdF9jYXN0
PEFQSTo6Q29udGVudFdvcmxkKj4oJnVzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpKSk7CiAKICAg
ICBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyczsKICAgICB3
b3JsZElkZW50aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod29ybGRzLnNpemUoKSk7CkBA
IC0yNDYsMTQgKzI0NSwxNCBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vCiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKLSAgICByZW1v
dmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZHMpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVz
ZXMod29ybGRzKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0g
ICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2Vy
Q29udGVudFdvcmxkKCk7CisgICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJT
dHlsZVNoZWV0LmNvbnRlbnRXb3JsZCgpOwogCi0gICAgYWRkVXNlckNvbnRlbnRXb3JsZFVzZSh3
b3JsZC5nZXQoKSk7CisgICAgYWRkQ29udGVudFdvcmxkVXNlKHdvcmxkLmdldCgpKTsKIAogICAg
IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hlZXQpOwog
CkBAIC0yNjMsMzMgKzI2MiwzMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjphZGRVCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJT
dHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQogewotICAgIFJl
ZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRl
bnRXb3JsZCgpOworICAgIFJlZjxBUEk6OkNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVT
aGVldC5jb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQogICAgICAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxl
U2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hl
ZXRzLT5lbGVtZW50cygpLnJlbW92ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCi0gICAgcmVtb3Zl
VXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQuZ2V0KCksIDEpOworICAgIHJlbW92ZUNvbnRlbnRX
b3JsZFVzZXMod29ybGQuZ2V0KCksIDEpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxk
JiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3Js
ZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU3R5
bGVTaGVldHNSZW1vdmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNo
aW5nPEFQSTo6VXNlclN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkg
ewotICAgICAgICByZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkgPT0g
JndvcmxkOworICAgICAgICByZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT5jb250ZW50V29ybGQoKSA9
PSAmd29ybGQ7CiAgICAgfSk7CiAKLSAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3Js
ZCwgdXNlclN0eWxlU2hlZXRzUmVtb3ZlZCk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3
b3JsZCwgdXNlclN0eWxlU2hlZXRzUmVtb3ZlZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiB7Ci0gICAgSGFzaENv
dW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+IHdvcmxkczsKKyAgICBIYXNo
Q291bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGQ+PiB3b3JsZHM7CiAgICAgZm9yIChh
dXRvIHVzZXJTdHlsZVNoZWV0IDogbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzT2ZUeXBlPEFQ
STo6VXNlclN0eWxlU2hlZXQ+KCkpCi0gICAgICAgIHdvcmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6
OlVzZXJDb250ZW50V29ybGQqPigmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKSkp
OworICAgICAgICB3b3JsZHMuYWRkKGNvbnN0X2Nhc3Q8QVBJOjpDb250ZW50V29ybGQqPigmdXNl
clN0eWxlU2hlZXQtPmNvbnRlbnRXb3JsZCgpKSk7CiAKICAgICBWZWN0b3I8Q29udGVudFdvcmxk
SWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyczsKICAgICB3b3JsZElkZW50aWZpZXJzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkod29ybGRzLnNpemUoKSk7CkBAIC0zMDEsNyArMzAwLDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtbwogCiAgICAgbV91c2VyU3R5bGVT
aGVldHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIAotICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRV
c2VzKHdvcmxkcyk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZHMpOwogfQogCiBi
b29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXIoV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXImIGhhbmRsZXIpCkBAIC0zMTMsNyArMzEyLDcg
QEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGFkZFVzZXJDb250ZW50V29ybGRVc2Uod29ybGQp
OworICAgIGFkZENvbnRlbnRXb3JsZFVzZSh3b3JsZCk7CiAKICAgICBtX3NjcmlwdE1lc3NhZ2VI
YW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZoYW5kbGVyKTsKIApAQCAtMzIzLDcg
KzMyMiw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZCYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJ
OjpDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0TWVz
c2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09IG5h
bWUgJiYgaXQtPnZhbHVlLT53b3JsZCgpLmlkZW50aWZpZXIoKSA9PSB3b3JsZC5pZGVudGlmaWVy
KCkpIHsKQEAgLTMzMiwxMyArMzMxLDEzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW8KIAogICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3Zl
KGl0KTsKIAotICAgICAgICAgICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIDEp
OworICAgICAgICAgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgMSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewog
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsK
QEAgLTM1Miw3ICszNTEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9KTsKIAotICAgIHJlbW92ZVVzZXJDb250
ZW50V29ybGRVc2VzKHdvcmxkLCBudW1iZXJSZW1vdmVkKTsKKyAgICByZW1vdmVDb250ZW50V29y
bGRVc2VzKHdvcmxkLCBudW1iZXJSZW1vdmVkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlELCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw4ICs0MSw3IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEFycmF5OwogY2xhc3Mg
Q29udGVudFJ1bGVMaXN0OwotY2xhc3MgQ29udGVudFdvcmxkQmFzZTsKLWNsYXNzIFVzZXJDb250
ZW50V29ybGQ7CitjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3Mg
VXNlclN0eWxlU2hlZXQ7CiB9CkBAIC04MiwyMSArODEsMjEgQEAgcHVibGljOgogICAgIEFQSTo6
QXJyYXkmIHVzZXJTY3JpcHRzKCkgeyByZXR1cm4gbV91c2VyU2NyaXB0cy5nZXQoKTsgfQogICAg
IHZvaWQgYWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmLCBJbmplY3RVc2VyU2NyaXB0SW1t
ZWRpYXRlbHkpOwogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmKTsK
LSAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwor
ICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpDb250ZW50V29ybGQmKTsKICAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CiAKICAgICBBUEk6OkFycmF5JiB1c2VyU3R5bGVT
aGVldHMoKSB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0cy5nZXQoKTsgfQogICAgIHZvaWQgYWRk
VXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYpOwogICAgIHZvaWQgcmVtb3ZlVXNl
clN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYpOwotICAgIHZvaWQgcmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQgcmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKEFQSTo6Q29udGVudFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoKTsKIAotICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnQoQVBJOjpV
c2VyQ29udGVudFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudChBUEk6OkNv
bnRlbnRXb3JsZCYpOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSB3YXMgYSBuYW1l
IGNvbmZsaWN0LgogICAgIGJvb2wgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyJik7Ci0gICAgdm9pZCByZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JO
YW1lKGNvbnN0IFN0cmluZyYsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwotICAgIHZvaWQgcmVt
b3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICB2
b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpD
b250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJ
OjpDb250ZW50V29ybGQmKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAg
dm9pZCBhZGROZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5Jik7CkBAIC0xMTcsMTcg
KzExNiwxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90
IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCi0gICAgdm9p
ZCBhZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6Q29udGVudFdvcmxkQmFzZSYpOwotICAgIHZv
aWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5z
aWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwotICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRX
b3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+Jik7
Ci0gICAgYm9vbCBzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6
VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKKyAgICB2
b2lkIGFkZENvbnRlbnRXb3JsZFVzZShBUEk6OkNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQgcmVt
b3ZlQ29udGVudFdvcmxkVXNlcyhBUEk6OkNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9m
VXNlc1RvUmVtb3ZlKTsKKyAgICB2b2lkIHJlbW92ZUNvbnRlbnRXb3JsZFVzZXMoSGFzaENvdW50
ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkPj4mKTsKKyAgICBib29sIHNob3VsZFNlbmRS
ZW1vdmVDb250ZW50V29ybGRzTWVzc2FnZShBUEk6OkNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51
bWJlck9mVXNlc1RvUmVtb3ZlKTsKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4gbV9wcm9j
ZXNzZXM7CiAgICAgUmVmPEFQSTo6QXJyYXk+IG1fdXNlclNjcmlwdHM7CiAgICAgUmVmPEFQSTo6
QXJyYXk+IG1fdXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOwotICAgIEhh
c2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZEJhc2U+PiBtX2NvbnRlbnRXb3Js
ZHM7CisgICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkPj4gbV9jb250
ZW50V29ybGRzOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBXZWFrSGFz
aFNldDxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBtX25ldHdvcmtQcm9jZXNzZXM7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNjUsNyArMTI2NSw2IEBACiAJCTdDODgyREY3MUM3RTk5
NjUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg4MkRGMzFDN0U5OTVFMDA2QkY3MzEgLyogX1dL
VXNlckNvbnRlbnRXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdDODgyREY5MUM3RTk5NkYwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdv
cmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDODgyREY1MUM3RTk5NUUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVudFdvcmxkSW50ZXJu
YWwuaCAqLzsgfTsKIAkJN0M4ODJERkExQzdFOTk3MzAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODgyREY2MUM3RTk5NUUwMDZCRjczMSAvKiBXS1VzZXJTY3JpcHRQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJN0M4ODJERkQxQzdFOTlB
ODAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElV
c2VyQ29udGVudFdvcmxkLmggKi87IH07CiAJCTdDODlEMjk0MUE2NzEyMkYwMDNBNUZERSAvKiBB
UElVc2VyU2NyaXB0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5oICovOyB9Owog
CQk3Qzg5RDI5ODFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMjk2MUE2NzUz
QjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oICovOyB9OwogCQk3Qzg5RDI5QzFB
Njc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyOUExQTY3ODM3QjAwM0E1RkRF
IC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDE0NCw4ICs0MTQzLDYgQEAKIAkJN0M4ODJERjQxQzdF
OTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tVc2VyQ29udGVudFdvcmxkLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Qzg4MkRGNTFDN0U5OTVFMDA2QkY3MzEgLyogX1dLVXNlckNv
bnRlbnRXb3JsZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Qzg4MkRGNjFDN0U5OTVFMDA2QkY3MzEgLyogV0tVc2VyU2NyaXB0UHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJTY3JpcHRQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDODgyREZCMUM3RTk5QTYwMDZCRjczMSAvKiBBUElV
c2VyQ29udGVudFdvcmxkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFQSVVzZXJDb250ZW50V29ybGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
Qzg4MkRGQzFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyQ29udGVudFdvcmxkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2Vy
U2NyaXB0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJTY3JpcHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4OUQyOTUxQTY3NTNCMjAwM0E1RkRF
IC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M4OUQyOTYxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVBhZ2VDb25maWd1cmF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NzQ2LDggKzg3NDMsNiBAQAogCQkJ
CTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oICovLAogCQkJCTUxRDEy
NDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVUYXNrLmNwcCAqLywKIAkJCQk1MUQx
MjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lVGFzay5oICovLAotCQkJCTdDODgy
REZCMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmNwcCAqLywKLQkJCQk3
Qzg4MkRGQzFDN0U5OUE2MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5oICovLAogCQkJ
CTdDQjM2NUFGMUQzMUREMUUwMDcxNThDQSAvKiBBUElVc2VySW5pdGlhdGVkQWN0aW9uLmggKi8s
CiAJCQkJN0M4OUQyQTUxQTY3ODlFQTAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuY3BwICovLAog
CQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmggKi8sCkBAIC0x
MDIwMSw3ICsxMDE5Niw2IEBACiAJCQkJQkNFMjMxNUQxMjJDMzBDQTAwRDVDMzVBIC8qIEFQSVVS
TFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTBBMUQyMTIyREQ1NUUwMENDOEM1MCAv
KiBBUElVUkxSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYxMTNFMjUxMjZDRTE4MjAw
NTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
N0M4ODJERkQxQzdFOTlBODAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDQjM2NUIxMUQzMUREMUUwMDcxNThDQSAvKiBBUElVc2VySW5pdGlhdGVk
QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5RDI5NDFBNjcxMjJGMDAzQTVGREUgLyog
QVBJVXNlclNjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ4Nzg2MjQxQkRCNThGRjAwRDAy
QUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQqIFdlYlVzZXJDb250ZW4KICAgICByZXR1cm4gaXRlcmF0b3IgPT0gd29ybGRNYXAoKS5lbmQo
KSA/IG51bGxwdHIgOiBpdGVyYXRvci0+dmFsdWUuZmlyc3QuZ2V0KCk7CiB9CiAKLXZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFp
cjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjphZGRDb250ZW50V29ybGQoY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRX
b3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkKQogewogICAgIEFTU0VSVCh3b3JsZC5maXJz
dCk7CiAgICAgaWYgKHdvcmxkLmZpcnN0ID09IHBhZ2VDb250ZW50V29ybGRJZGVudGlmaWVyKCkp
CkBAIC0xMTksMTMgKzExOSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlckNvCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4+JiB3b3JsZHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4+JiB3b3JsZHMpCiB7CiAgICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxk
cykKLSAgICAgICAgYWRkVXNlckNvbnRlbnRXb3JsZCh3b3JsZCk7CisgICAgICAgIGFkZENvbnRl
bnRXb3JsZCh3b3JsZCk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1v
dmVVc2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4m
IHdvcmxkSWRlbnRpZmllcnMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3Zl
Q29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmllcj4mIHdvcmxk
SWRlbnRpZmllcnMpCiB7CiAgICAgZm9yIChhdXRvJiB3b3JsZElkZW50aWZpZXIgOiB3b3JsZElk
ZW50aWZpZXJzKSB7CiAgICAgICAgIEFTU0VSVCh3b3JsZElkZW50aWZpZXIpOwpAQCAtMTMzLDcg
KzEzMyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2UKIAogICAg
ICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRpZmllcik7CiAgICAgICAg
IGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMo
IlRyeWluZyB0byByZW1vdmUgYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBDb250ZW50V29ybGQgKGlkPSUi
IFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTYwogICAgIGZvciAoY29u
c3QgYXV0byYgdXNlclNjcmlwdERhdGEgOiB1c2VyU2NyaXB0cykgewogICAgICAgICBhdXRvIGl0
ID0gd29ybGRNYXAoKS5maW5kKHVzZXJTY3JpcHREYXRhLndvcmxkSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIlRyeWluZyB0byBhZGQgYSBVc2VyU2NyaXB0IHRvIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9
JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgdXNlclNjcmlwdERhdGEud29ybGRJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcg
dG8gYWRkIGEgVXNlclNjcmlwdCB0byBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRo
YXQgZG9lcyBub3QgZXhpc3QuIiwgdXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMTYyLDcgKzE2
Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2UKIHsKICAgICBh
dXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ID09
IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVt
b3ZlIGEgVXNlclNjcmlwdCBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIp
IHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
ICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBVc2VyU2NyaXB0IGZyb20gYSBD
b250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxk
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc0
LDcgKzE3NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGwKICAg
ICBmb3IgKGF1dG8mIHdvcmxkSWRlbnRpZmllciA6IHdvcmxkSWRlbnRpZmllcnMpIHsKICAgICAg
ICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJU
cnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU2NyaXB0cyBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAo
aWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFs
bCBVc2VyU2NyaXB0cyBmcm9tIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBk
b2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3QKICAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJTdHls
ZVNoZWV0RGF0YSA6IHVzZXJTdHlsZVNoZWV0cykgewogICAgICAgICBhdXRvIGl0ID0gd29ybGRN
YXAoKS5maW5kKHVzZXJTdHlsZVNoZWV0RGF0YS53b3JsZElkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJU
cnlpbmcgdG8gYWRkIGEgVXNlclN0eWxlU2hlZXQgdG8gYSBVc2VyQ29udGVudFdvcmxkIChpZD0l
IiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU3R5bGVTaGVldERhdGEud29y
bGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlp
bmcgdG8gYWRkIGEgVXNlclN0eWxlU2hlZXQgdG8gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2
NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHVzZXJTdHlsZVNoZWV0RGF0YS53b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
cmVtb3ZlVXNlCiB7CiAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElkZW50aWZp
ZXIpOwogICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVzZXJTdHlsZVNoZWV0IGZyb20gYSBVc2VyQ29udGVu
dFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92
ZSBhIFVzZXJTdHlsZVNoZWV0IGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0
aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpyZW1vdmVBbGwKICAgICBmb3IgKGF1dG8mIHdvcmxkSWRlbnRpZmllciA6
IHdvcmxkSWRlbnRpZmllcnMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3
b3JsZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewot
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU3R5bGVT
aGVldHMgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMg
bm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNlclN0eWxlU2hlZXRzIGZyb20gYSBD
b250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxk
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTYwogICAgIGZvciAoYXV0byYgaGFuZGxlciA6IHNjcmlwdE1lc3NhZ2VIYW5kbGVycykgewog
ICAgICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKGhhbmRsZXIud29ybGRJZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIGFkZCBhIFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciB0byBh
IFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIs
IGhhbmRsZXIud29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJUcnlpbmcgdG8gYWRkIGEgVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIHRvIGEgQ29u
dGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBoYW5kbGVy
LndvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6cmVtb3ZlVXNlCiAjaWYgRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKICAgICBhdXRv
IGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRpZmllcik7CiAgICAgaWYgKGl0ID09IHdv
cmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3Zl
IGEgVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0l
IiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlciBmcm9tIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6cmVtb3ZlQWxsCiAgICAgZm9yIChhdXRvJiB3b3JsZElkZW50aWZpZXIgOiB3
b3JsZElkZW50aWZpZXJzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29y
bGRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNlclNjcmlwdE1l
c3NhZ2VIYW5kbGVyIGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlciBmcm9tIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5v
dCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2Niw4IEBA
IHB1YmxpYzoKIAogICAgIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkRm9ySWRlbnRp
ZmllcihDb250ZW50V29ybGRJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgYWRkVXNlckNvbnRlbnRX
b3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJp
bmc+PiYpOwotICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29u
dGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYpOworICAgIHZvaWQgYWRkQ29udGVudFdvcmxk
cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+
Jik7CisgICAgdm9pZCBhZGRDb250ZW50V29ybGQoY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIFN0cmluZz4mKTsKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3RvcjxX
ZWJVc2VyU2NyaXB0RGF0YT4mJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2
b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRh
PiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiYpOwpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRl
OgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IHJlbW92ZVVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlm
aWVyPiYpOworICAgIHZvaWQgcmVtb3ZlQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8Q29udGVu
dFdvcmxkSWRlbnRpZmllcj4mKTsKIAogICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdChDb250ZW50
V29ybGRJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VyU2NyaXB0SWRlbnRpZmllcik7CiAgICAgdm9p
ZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8Q29udGVudFdvcmxkSWRlbnRpZmll
cj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMjQsOCArMjQsOCBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlciB7Ci0gICAgQWRkVXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPHN0ZDo6cGFpcjxXZWJL
aXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+IHdvcmxkcyk7Ci0gICAgUmVtb3Zl
VXNlckNvbnRlbnRXb3JsZHMoVmVjdG9yPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcj4g
d29ybGRJZGVudGlmaWVycyk7CisgICAgQWRkQ29udGVudFdvcmxkcyhWZWN0b3I8c3RkOjpwYWly
PFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4gd29ybGRzKTsKKyAgICBS
ZW1vdmVDb250ZW50V29ybGRzKFZlY3RvcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXI+
IHdvcmxkSWRlbnRpZmllcnMpOwogCiAgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPHN0cnVjdCBX
ZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhPiB1c2VyU2NyaXB0cywgZW51bTpib29sIFdlYktpdDo6
SW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KTsKICAgICBSZW1vdmVVc2Vy
U2NyaXB0KFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciB3b3JsZElkZW50aWZpZXIsIHVp
bnQ2NF90IGlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDcsNyArNzA3
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIAogICAgIGZvciAo
Y29uc3QgYXV0byYgaXRlcmF0b3IgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKQogICAg
ICAgICByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaXRlcmF0b3IudmFsdWUsIGl0ZXJhdG9yLmtl
eSk7CiAKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlckNvbnRlbnRXb3JsZHMo
cGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcyk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZENvbnRlbnRXb3JsZHMocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcyk7CiAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRzKFdURk1vdmUocGFyYW1ldGVy
cy51c2VyU2NyaXB0cyksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogICAgIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldHMocGFyYW1ldGVycy51c2Vy
U3R5bGVTaGVldHMpOwogICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHBhcmFtZXRlcnMubWVzc2FnZUhhbmRsZXJzKTsKQEAgLTM0MzIsNyAr
MzQzMiw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnIKIAogdm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJ
ZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
LSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlckNvbnRlbnRXb3JsZCh3b3JsZERh
dGEpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50V29ybGQod29ybGRE
YXRhKTsKICAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCB3b3JsZERhdGEuZmlyc3QsIGNhbGxiYWNrSUQpOwogfQogCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTc1MjUpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0w
Mi0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIF9XS1VzZXJDb250ZW50V29ybGQgc2hvdWxkIGJlIGEgd3JhcHBlciBhcm91bmQgV0tDb250
ZW50V29ybGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW06CisgICAgICAgIChURVNUKToKKwogMjAy
MC0wMi0yNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAg
ICAgICBUZXN0V2ViS2l0QVBJIGFuZCBXZWJLaXRUZXN0UnVubmVyIHNob3VsZCBoYXZlIGJ1bmRs
ZSBpZGVudGlmaWVycwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyQ29udGVudFdvcmxkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVXNlckNvbnRlbnRXb3JsZC5tbQkocmV2aXNpb24gMjU3MzY5KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxk
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTUgQEAKICNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1URVNUKFVz
ZXJDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkKQorVEVTVChDb250ZW50V29ybGQsIE5vcm1hbFdv
cmxkKQogewogICAgIFJldGFpblB0cjxXS1VzZXJTY3JpcHQ+IGJhc2ljVXNlclNjcmlwdCA9IGFk
b3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOkAiIiBpbmplY3Rpb25U
aW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1l
T25seTpZRVNdKTsKLSAgICBFWFBFQ1RfRVEoW2Jhc2ljVXNlclNjcmlwdCBfdXNlckNvbnRlbnRX
b3JsZF0sIFtfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdvcmxkXSk7CisgICAgRVhQRUNUX05F
KFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdLCBbX1dLVXNlckNvbnRlbnRXb3Js
ZCBub3JtYWxXb3JsZF0pOworICAgIEVYUEVDVF9XS19TVFJFUShbYmFzaWNVc2VyU2NyaXB0IF91
c2VyQ29udGVudFdvcmxkXS5uYW1lLCBbX1dLVXNlckNvbnRlbnRXb3JsZCBub3JtYWxXb3JsZF0u
bmFtZSk7CiAgICAgRVhQRUNUX05VTEwoW2Jhc2ljVXNlclNjcmlwdCBfdXNlckNvbnRlbnRXb3Js
ZF0ubmFtZSk7CiB9CiAKLVRFU1QoVXNlckNvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGRVc2VyU2Ny
aXB0KQorVEVTVChDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkVXNlclNjcmlwdCkKIHsKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAgLTc2LDE2ICs3Nywx
NyBAQCBURVNUKFVzZXJDb250ZW50V29ybGQsIE5vcm1hbFdvcmxkVXNlclNjCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1URVNUKFVzZXJDb250ZW50V29ybGQs
IElzb2xhdGVkV29ybGQpCitURVNUKENvbnRlbnRXb3JsZCwgSXNvbGF0ZWRXb3JsZCkKIHsKICAg
ICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gaXNvbGF0ZWRXb3JsZCA9IFtfV0tVc2Vy
Q29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoW2lzb2xhdGVkV29ybGQgbmFtZV0sIEAiVGVzdFdvcmxkIik7CiAKICAgICBSZXRhaW5Q
dHI8V0tVc2VyU2NyaXB0PiB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxv
Y10gX2luaXRXaXRoU291cmNlOkAiIiBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlv
blRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVMgbGVnYWN5V2hpdGVsaXN0
OkBbXSBsZWdhY3lCbGFja2xpc3Q6QFtdIHVzZXJDb250ZW50V29ybGQ6aXNvbGF0ZWRXb3JsZC5n
ZXQoKV0pOwotICAgIEVYUEVDVF9FUShbdXNlclNjcmlwdCBfdXNlckNvbnRlbnRXb3JsZF0sIGlz
b2xhdGVkV29ybGQuZ2V0KCkpOworICAgIEVYUEVDVF9ORShbdXNlclNjcmlwdCBfdXNlckNvbnRl
bnRXb3JsZF0sIGlzb2xhdGVkV29ybGQuZ2V0KCkpOworICAgIEVYUEVDVF9XS19TVFJFUShbdXNl
clNjcmlwdCBfdXNlckNvbnRlbnRXb3JsZF0ubmFtZSwgW2lzb2xhdGVkV29ybGQgbmFtZV0pOwog
fQogCi1URVNUKFVzZXJDb250ZW50V29ybGQsIElzb2xhdGVkV29ybGRVc2VyU2NyaXB0KQorVEVT
VChDb250ZW50V29ybGQsIElzb2xhdGVkV29ybGRVc2VyU2NyaXB0KQogewogICAgIFJldGFpblB0
cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391810</attachid>
            <date>2020-02-26 16:49:52 -0800</date>
            <delta_ts>2020-02-26 17:06:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208274-20200226164951.patch</filename>
            <type>text/plain</type>
            <size>89869</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0wMi0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIF9XS1VzZXJDb250
ZW50V29ybGQgc2hvdWxkIGJlIGEgd3JhcHBlciBhcm91bmQgV0tDb250ZW50V29ybGQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgU1BJcyB3
ZXJlIGdldHRpbmcgY29uZnVzZWQgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBVcGRhdGVkIEFQ
SSB0ZXN0cyB3aGljaCBleHBlY3RlZCBwb2ludGVyIGVxdWFsaXR5LCB3aGljaCBpcyBubyBsb25n
ZXIgdHJ1ZSBvciBpbXBvcnRhbnQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6Q29udGVu
dFdvcmxkQmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
V29ybGQuaDoKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6aWRlbnRpZmllciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZEJhc2U6Om5hbWUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjp3b3JsZERhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjpDb250ZW50V29y
bGRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRXb3JsZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6VXNl
clN0eWxlU2hlZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAo
V0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVz
ZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
OgorICAgICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
V29ybGQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2VyU2NyaXB0
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNl
ckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX2Fk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVn
YWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50V29ybGQgX2luaXRXaXRoTmFtZTpdKToKKyAgICAgICAgKC1bX1dLVXNl
ckNvbnRlbnRXb3JsZCBfaW5pdF0pOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudFdvcmxkIF9p
bml0V2l0aENvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKCtbX1dLVXNlckNvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdv
cmxkXSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50V29ybGQgbmFtZV0pOgorICAgICAgICAo
LVtfV0tVc2VyQ29udGVudFdvcmxkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRXb3JsZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVT
aGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dL
VXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0
ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6Ondvcmxk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUNvbnRlbnRXb3JsZFVzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJDb250ZW50V29ybGRVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29u
dGVudFdvcmxkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlckNvbnRlbnRXb3JsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9wcm9jZXNzRGlzcGxheU5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCk6CisKIDIwMjAtMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEFsbG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nl
c3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjU3MzY5KQorKysgU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw2IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW8KIFVJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAotVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKLSAgICAgICAgVXNlckNvbnRlbnRXb3JsZCwKICAg
ICAgICAgVXNlckluaXRpYXRlZEFjdGlvbiwKICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLAogICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUx
LDEyICszNTEsNiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwCiAg
ICAgICAgIHdyYXBwZXIgPSBbV0tDb250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgVHlwZTo6VXNlckNvbnRlbnRXb3JsZDoKLSAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVu
dFdvcmxkIGFsbG9jXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBUeXBlOjpVc2VySW5pdGlhdGVkQWN0aW9uOgog
ICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJJbml0aWF0ZWRBY3Rpb24gYWxsb2NdOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29y
bGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAK
LSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxk
U2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCi1Db250ZW50V29ybGRCYXNlOjpDb250
ZW50V29ybGRCYXNlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorQ29udGVudFdvcmxkOjpDb250
ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCiAgICAgOiBtX25hbWUobmFtZSkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKQEAgLTc2LDIxICs3NSw2IEBAIENvbnRl
bnRXb3JsZCYgQ29udGVudFdvcmxkOjpkZWZhdWx0Q2xpZW4KICAgICByZXR1cm4gKndvcmxkLmdl
dCgpOwogfQogCi1Db250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2UobmFtZSkKLXsKLX0KLQotQ29udGVudFdvcmxk
OjpDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKGlkZW50aWZpZXIpCi17Ci19Ci0KLUNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKHVzZXJDb250ZW50V29ybGQuaWRlbnRpZmllcigpLCB1
c2VyQ29udGVudFdvcmxkLm5hbWUoKSkKLXsKLX0KLQogQ29udGVudFdvcmxkOjp+Q29udGVudFdv
cmxkKCkKIHsKICAgICBpZiAobmFtZSgpLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaAkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwzMiArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgVXNlckNv
bnRlbnRXb3JsZDsKLQotY2xhc3MgQ29udGVudFdvcmxkQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+Q29udGVudFdvcmxkQmFzZSgpID0gZGVmYXVsdDsKLQotICAgIFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KLSAgICBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBXVEY6OlN0
cmluZz4gd29ybGREYXRhKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIENvbnRlbnRXb3JsZEJhc2Uo
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgfQotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpDb250ZW50V29y
bGRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbmFtZShuYW1lKSB7IH0K
LXByaXZhdGU6Ci0gICAgV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKLSAgICBXVEY6OlN0cmluZyBtX25hbWU7Ci19OwotCi1jbGFzcyBDb250ZW50V29ybGQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29y
bGQ+LCBwdWJsaWMgQ29udGVudFdvcmxkQmFzZSB7CitjbGFzcyBDb250ZW50V29ybGQgZmluYWwg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbnRlbnRXb3JsZD4gc2hhcmVkV29ybGRXaXRo
TmFtZShjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBDb250ZW50V29ybGQmIHBhZ2VD
b250ZW50V29ybGQoKTsKQEAgLTY0LDEzICszOSwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5Db250ZW50V29ybGQoKTsKIAotICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBPYmplY3RJ
bXBsOjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IE9iamVjdEltcGw6
OmRlcmVmKCk7IH0KKyAgICBXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgc3RkOjpwYWlyPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IENvbnRl
bnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIpOwotICAgIGV4cGxpY2l0IENv
bnRlbnRXb3JsZChjb25zdCBVc2VyQ29udGVudFdvcmxkJik7CisgICAgZXhwbGljaXQgQ29udGVu
dFdvcmxkKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KKworICAgIFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV1RGOjpTdHJpbmcgbV9uYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRX
b3JsZFNoYXJlZC5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLQotUmVmPFVzZXJDb250ZW50V29ybGQ+
IFVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRXb3JsZChuYW1lKSk7Ci19
Ci0KLVJlZjxVc2VyQ29udGVudFdvcmxkPiBVc2VyQ29udGVudFdvcmxkOjpmcm9tQ29udGVudFdv
cmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxkKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVzZXJDb250ZW50V29ybGQoY29udGVudFdvcmxkKSk7Ci19Ci0KLVVzZXJDb250
ZW50V29ybGQmIFVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkKLXsKLSAgICBzdGF0aWMg
VXNlckNvbnRlbnRXb3JsZCogd29ybGQgPSBuZXcgVXNlckNvbnRlbnRXb3JsZChGb3JOb3JtYWxX
b3JsZE9ubHk6Ok5vcm1hbFdvcmxkKTsKLSAgICByZXR1cm4gKndvcmxkOwotfQotCi1Vc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAg
IDogQ29udGVudFdvcmxkQmFzZShuYW1lKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjpVc2Vy
Q29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2Uo
V2ViS2l0OjpwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQotewotfQotCi1Vc2VyQ29udGVu
dFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxk
KQotICAgIDogQ29udGVudFdvcmxkQmFzZShjb250ZW50V29ybGQuaWRlbnRpZmllcigpLCBjb250
ZW50V29ybGQubmFtZSgpKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjp+VXNlckNvbnRlbnRX
b3JsZCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBVc2VyQ29udGVudFdvcmxkIGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRl
bnRXb3JsZD4sIHB1YmxpYyBDb250ZW50V29ybGRCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmKTsK
LSAgICBzdGF0aWMgVXNlckNvbnRlbnRXb3JsZCYgbm9ybWFsV29ybGQoKTsKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IGZyb21Db250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxk
Jik7Ci0KLSAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudFdvcmxkKCk7Ci0KLSAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgT2JqZWN0SW1wbDo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBPYmplY3RJbXBsOjpkZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgVXNlckNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IFVz
ZXJDb250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxkJik7Ci0KLSAgICBlbnVtIGNsYXNzIEZv
ck5vcm1hbFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07Ci0gICAgZXhwbGljaXQgVXNlckNvbnRl
bnRXb3JsZChGb3JOb3JtYWxXb3JsZE9ubHkpOwotCi19OwotCi19IC8vIG5hbWVzcGFjZSBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAJ
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDEwIEBAIFdURjo6VVJMIFVz
ZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKICAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJp
bmcoInVzZXItc2NyaXB0OiIsICsraWRlbnRpZmllcikgfTsKIH0KIAotVXNlclNjcmlwdDo6VXNl
clNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCitVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91c2VyU2NyaXB0
KHVzZXJTY3JpcHQpCiAgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCi0KIH0gLy8gbmFtZXNw
YWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclNjcmlwdC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2LDIxICsz
NiwyMSBAQCBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6
CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGljIFJlZjxVc2VyU2NyaXB0PiBj
cmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYg
d29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdU
Rk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAgICAgfQogCi0gICAgVXNlclNjcmlwdChXZWJD
b3JlOjpVc2VyU2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBVc2VyU2NyaXB0
KFdlYkNvcmU6OlVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0OyB9CiAgICAgCi0gICAgVXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgpIHsg
cmV0dXJuIG1fd29ybGQ7IH0KLSAgICBjb25zdCBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVu
dFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIENvbnRlbnRXb3JsZCYgY29u
dGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIGNvbnN0IENvbnRlbnRXb3JsZCYg
Y29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IG1fdXNlclNjcmlwdDsKLSAgICBSZWY8VXNlckNvbnRl
bnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgV1RGOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VQogICAgIHJldHVybiB7IHsgfSwgbWFrZVN0cmluZygidXNlci1zdHlsZS1zaGVldDoiLCArK2lk
ZW50aWZpZXIpIH07CiB9CiAKLVVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKK1VzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91
c2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2
LDIxICszNiwyMSBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplCiBw
dWJsaWM6CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
dXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGlj
IFJlZjxVc2VyU3R5bGVTaGVldD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJT
dHlsZVNoZWV0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5bGVTaGVldChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSwg
d29ybGQpKTsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CiAKLSAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxk
KCkgeyByZXR1cm4gbV93b3JsZDsgfQotICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJD
b250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgQ29udGVudFdvcmxk
JiBjb250ZW50V29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgY29uc3QgQ29udGVudFdv
cmxkJiBjb250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgbV91c2VyU3R5bGVTaGVldDsKLSAgICBSZWY8
VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29u
dGVudFJ1bGVMaXN0LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1
ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oIgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxl
U2hlZXQoV0tQYWdlCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQ
YXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJucyk7CiAKLSAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQgPSBB
UEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3Vy
Y2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6ICBVUkwoVVJM
KCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3Rv
cigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+
IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJs
YW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRl
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJs
YWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHRv
SW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQ
YWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRv
SW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNl
clNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdU
Rk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVj
dG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmpl
Y3RlZEZyYW1lcykgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAg
ICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYg
V0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25s
eSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVz
ZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNl
UmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVc2VyU2NyaXB0Q29weVNvdXJjZShXS1VzZXJTY3JpcHRSZWYg
dXNlclNjcmlwdFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKF9XS1VzZXJDb250ZW50V29ybGQgKilfdXNl
ckNvbnRlbnRXb3JsZAogewotICAgIHJldHVybiBbW3dyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpmcm9tQ29udGVudFdvcmxkKCpfY29udGVudFdvcmxkKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENv
bnRlbnRXb3JsZDpzZWxmXSBhdXRvcmVsZWFzZV07CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgog
CisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgotI2ltcG9ydCAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2ltcG9ydCAiSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdElu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE0NiwxNCArMTQ3LDE0IEBAIHByaXZhdGU6CiAK
IC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNv
bnRlbnRXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0
byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJl
YWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFu
ZGxlckZvck5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIF91c2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCkBAIC0xNzUsNyArMTc2LDcgQEAgLSAodm9pZClfcmVtb3Zl
VXNlclNjcmlwdDooV0tVc2VyU2NyaXB0IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewotICAg
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJD
b250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCkBAIC0yMjgsMjQgKzIyOSwyNCBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtICh2b2lkKV9yZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1Vz
ZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKnVzZXJDb250ZW50V29ybGQt
Pl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNT
dHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRX
b3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVz
ZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogICAgIGlmICgh
X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQog
CiAtICh2b2lkKV9yZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRX
b3JsZAogewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29y
bGQpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX3JlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVy
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92
ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdv
cmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJNZXNz
YWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29y
bGQpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9
LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRl
bnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDE1ICs5NCw0MCBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNj
cmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJs
YWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1l
cyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29u
dGVudFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPnVzZXJDb250ZW50
V29ybGQoKSk7CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0
V2l0aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1
dG9yZWxlYXNlXTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheSAqKWxl
Z2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXkgKilsZWdhY3lCbGFja2xpc3Qg
Y29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVy
YXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29y
ZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAq
Y29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKworICAgIHJldHVybiBzZWxmOworfQorCist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rp
b25UaW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZy
YW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheSAq
KWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXkgKilsZWdhY3lCbGFja2xp
c3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVkVVJMIGNvbnRlbnRXb3JsZDooV0tD
b250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJ
bldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RG
OjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
SW5qZWN0SW5BbGxGcmFtZXMgfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAoV0tDb250ZW50V29ybGQgKilfY29udGVudFdvcmxkCit7
CisgICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpKTsKK30KKwog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlw
dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFz
cyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOwogCiBAaW50ZXJm
YWNlIFdLVXNlclNjcmlwdCAoV0tQcml2YXRlKQpAQCAtMzQsNyArMzUsMTEgQEAgTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5n
ICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0
aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hp
dGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNr
bGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCB1c2VyQ29udGVudFdv
cmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhT
b3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVj
dGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFt
ZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVs
aXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlz
dCBhc3NvY2lhdGVkVVJMOihOU1VSTCAqKWFzc29jaWF0ZWRVUkwgdXNlckNvbnRlbnRXb3JsZDoo
X1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlv
blRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9u
bHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0
IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCBj
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1lT25seTooQk9PTClm
b3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxl
Z2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdh
Y3lCbGFja2xpc3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVkVVJMIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBfV0tVc2VyQ29udGVudFdvcmxkICpfdXNlckNvbnRlbnRXb3JsZCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKl9jb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNv
bnRlbnRXb3JsZC5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDM4ICsyNiw1OCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVu
dFdvcmxkSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgor
CiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0aW9u
IF9XS1VzZXJDb250ZW50V29ybGQKIAotKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxkV2l0
aE5hbWU6KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE5hbWU6KE5T
U3RyaW5nICopbmFtZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6VXNlckNvbnRlbnRXb3Js
ZDo6d29ybGRXaXRoTmFtZShuYW1lKSk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfY29udGVudFdvcmxkID0gW1dLQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6bmFtZV07CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKF9XS1Vz
ZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAorLSAoaW5zdGFuY2V0eXBlKV9pbml0CiB7Ci0g
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIF9jb250ZW50V29ybGQgPSBbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXTsKKyAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50
V29ybGQtPn5Vc2VyQ29udGVudFdvcmxkKCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAgX2Nv
bnRlbnRXb3JsZCA9IHdvcmxkOworICAgIHJldHVybiBzZWxmOworfQorCisrIChfV0tVc2VyQ29u
dGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJu
IFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0gYXV0b3Jl
bGVhc2VdOworfQorCisrIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQKK3sKKyAg
ICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgaWYgKF91c2VyQ29udGVudFdvcmxk
LmdldCgpID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF91c2VyQ29udGVudFdvcmxkLT5uYW1lKCk7CisgICAg
cmV0dXJuIFtfY29udGVudFdvcmxkIG5hbWVdOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsK
LSAgICByZXR1cm4gKl91c2VyQ29udGVudFdvcmxkOworICAgIHJldHVybiBbX2NvbnRlbnRXb3Js
ZCBfYXBpT2JqZWN0XTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJu
YWwuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwy
MCArMjUsNyBAQAogCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkLmgiCiAKLSNpbXBvcnQg
IkFQSVVzZXJDb250ZW50V29ybGQuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCi0jaW1wb3J0IDx3
dGYvVmVjdG9yLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpVc2VyQ29u
dGVudFdvcmxkPiB7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tVc2VyQ29udGVudFdvcmxkOwotICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfTsKLQotfQorQGNsYXNzIFdLQ29udGVudFdvcmxk
OwogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNjIsNiArNDksNyBAQCBpbmxpbmUgVmVjdG9yPFdU
Rjo6U3RyaW5nPiB0b1N0cmluZ1ZlY3RvCiAKIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRlbnRXb3Js
ZCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6
VXNlckNvbnRlbnRXb3JsZD4gX3VzZXJDb250ZW50V29ybGQ7CisgICAgUmV0YWluUHRyPFdLQ29u
dGVudFdvcmxkPiBfY29udGVudFdvcmxkOwogfQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENv
bnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IElu
IHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUg
dGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxk
IHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2Vs
ZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVz
ZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1l
T25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50
V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVS
TCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtNTYsNyArNTYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2Fu
IHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0
cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAg
IFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0
ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhz
b3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVP
bmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3Qs
IHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVj
dCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBi
ZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5n
KFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9
LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJp
bmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFj
a2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVs
IH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNwcAkocmV2aXNpb24gMjU3MzY5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgKi8KIAogCi1BUEk6OlVzZXJDb250ZW50V29ybGQmIHdlYmtpdFVzZXJDb250ZW50V29y
bGQoY29uc3QgY2hhciogd29ybGROYW1lKQorQVBJOjpDb250ZW50V29ybGQmIHdlYmtpdENvbnRl
bnRXb3JsZChjb25zdCBjaGFyKiB3b3JsZE5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8Q1N0cmluZywgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+PiBtYXA7
Ci0gICAgcmV0dXJuICptYXAuZ2V0KCkuZW5zdXJlKHdvcmxkTmFtZSwgW3dvcmxkTmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgod29ybGROYW1lKV0geyByZXR1cm4gQVBJOjpVc2VyQ29udGVudFdvcmxk
Ojp3b3JsZFdpdGhOYW1lKHdvcmxkTmFtZSk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxDU3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50V29y
bGQ+Pj4gbWFwOworICAgIHJldHVybiAqbWFwLmdldCgpLmVuc3VyZSh3b3JsZE5hbWUsIFt3b3Js
ZE5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSldIHsKKyAgICAgICAgcmV0dXJuIEFQ
STo6Q29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKHdvcmxkTmFtZSk7CisgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCiBzdGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKFdlYktpdFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCkBAIC05NSw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
VmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWMKIH0KIAogc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVT
aGVldCB7Ci0gICAgX1dlYktpdFVzZXJTdHlsZVNoZWV0KGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdl
YktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJT
dHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBjaGFy
KiBjb25zdCogYmxhY2tsaXN0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQorICAgIF9X
ZWJLaXRVc2VyU3R5bGVTaGVldChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBsZXZl
bCwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJsYWNr
bGlzdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgICAgICA6IHVzZXJTdHlsZVNoZWV0
KGFkb3B0UmVmKG5ldyBBUEk6OlVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0IHsKICAgICAg
ICAgICAgIFN0cmluZzo6ZnJvbVVURjgoc291cmNlKSwgVVJMIHsgfSwKICAgICAgICAgICAgIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksCkBAIC0x
NzEsNyArMTczLDcgQEAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxlXwog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgV2ViS2l0
VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNlclN0
eWxlU2hlZXQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRVc2VyU3R5bGVTaGVldCkpKTsKLSAg
ICBuZXcgKHVzZXJTdHlsZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGluamVj
dGVkRnJhbWVzLCBsZXZlbCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0VXNl
clN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlzdCwgYmxh
Y2tsaXN0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICByZXR1
cm4gdXNlclN0eWxlU2hlZXQ7CiB9CiAKQEAgLTE5Nyw3ICsxOTksNyBAQCBXZWJLaXRVc2VyU3R5
bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29y
bGROYW1lLCBudWxscHRyKTsKIAogICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVT
aGVldCA9IHN0YXRpY19jYXN0PFdlYktpdFVzZXJTdHlsZVNoZWV0Kj4oZmFzdE1hbGxvYyhzaXpl
b2YoV2ViS2l0VXNlclN0eWxlU2hlZXQpKSk7Ci0gICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2Vi
S2l0VXNlclN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlz
dCwgYmxhY2tsaXN0LCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgIG5l
dyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0ZWRG
cmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgd2Via2l0Q29udGVudFdvcmxkKHdv
cmxkTmFtZSkpOwogICAgIHJldHVybiB1c2VyU3R5bGVTaGVldDsKIH0KIApAQCAtMjA3LDcgKzIw
OSw3IEBAIEFQSTo6VXNlclN0eWxlU2hlZXQmIHdlYmtpdFVzZXJTdHlsZVNoZWUKIH0KIAogc3Ry
dWN0IF9XZWJLaXRVc2VyU2NyaXB0IHsKLSAgICBfV2ViS2l0VXNlclNjcmlwdChjb25zdCBnY2hh
ciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVz
LCBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBjb25zdCBnY2hh
ciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgZ2NoYXIqIGNvbnN0KiBibGFja2xpc3QsIEFQSTo6
VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgX1dlYktpdFVzZXJTY3JpcHQoY29uc3QgZ2No
YXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cywgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgY29uc3QgZ2No
YXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxhY2tsaXN0LCBBUEk6
OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgICAgIDogdXNlclNjcmlwdChhZG9wdFJlZihuZXcg
QVBJOjpVc2VyU2NyaXB0KFVzZXJTY3JpcHQgewogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRG
OChzb3VyY2UpLCBVUkwgeyB9LAogICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwKQEAgLTI4Myw3ICsyODUsNyBAQCBXZWJLaXRV
c2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc291cmNlLCBudWxscHRyKTsKICAgICBXZWJLaXRVc2VyU2NyaXB0KiB1c2VyU2NyaXB0
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNlclNjcmlwdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktp
dFVzZXJTY3JpcHQpKSk7Ci0gICAgbmV3ICh1c2VyU2NyaXB0KSBXZWJLaXRVc2VyU2NyaXB0KHNv
dXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVjdGlvblRpbWUsIHdoaXRlbGlzdCwgYmxhY2tsaXN0
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIG5ldyAodXNlclNj
cmlwdCkgV2ViS2l0VXNlclNjcmlwdChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBpbmplY3Rpb25U
aW1lLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50
V29ybGQoKSk7CiAgICAgcmV0dXJuIHVzZXJTY3JpcHQ7CiB9CiAKQEAgLTMwOSw3ICszMTEsNyBA
QCBXZWJLaXRVc2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwod29ybGROYW1lLCBudWxscHRyKTsKIAogICAgIFdlYktpdFVzZXJTY3JpcHQq
IHVzZXJTY3JpcHQgPSBzdGF0aWNfY2FzdDxXZWJLaXRVc2VyU2NyaXB0Kj4oZmFzdE1hbGxvYyhz
aXplb2YoV2ViS2l0VXNlclNjcmlwdCkpKTsKLSAgICBuZXcgKHVzZXJTY3JpcHQpIFdlYktpdFVz
ZXJTY3JpcHQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgaW5qZWN0aW9uVGltZSwgd2hpdGVsaXN0
LCBibGFja2xpc3QsIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgbmV3
ICh1c2VyU2NyaXB0KSBXZWJLaXRVc2VyU2NyaXB0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGlu
amVjdGlvblRpbWUsIHdoaXRlbGlzdCwgYmxhY2tsaXN0LCB3ZWJraXRDb250ZW50V29ybGQod29y
bGROYW1lKSk7CiAgICAgcmV0dXJuIHVzZXJTY3JpcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM5LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9y
ZWcKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdl
ciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6
bm9ybWFsV29ybGQoKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5n
Ojpmcm9tVVRGOChuYW1lKSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7
CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBAIC0yNjMsNyArMjYz
LDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfdW5yZWdpcwogewogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKG1hbmFnZXIpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKG5hbWUpOwotICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250
ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShTdHJpbmc6OmZy
b21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAg
IG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OkNvbnRlbnRXb3JsZDo6
cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogLyoqCkBAIC0yODksNyArMjg5LDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZwogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHdvcmxkTmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZy
b21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgICAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2Fn
ZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtp
dENvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSk7CiB9CiAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl91bnJlZ2lzCiAgICAgZ19yZXR1cm5faWZfZmFpbChuYW1lKTsKICAgICBnX3JldHVy
bl9pZl9mYWlsKHdvcmxkTmFtZSk7CiAKLSAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENv
bnRyb2xsZXItPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoU3RyaW5nOjpmcm9tVVRG
OChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICBtYW5hZ2Vy
LT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZv
ck5hbWUoU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0Q29udGVudFdvcmxkKHdvcmxkTmFt
ZSkpOwogfQogCiAvKioKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBXZWJL
aXRVc2VyQ29udGVudFByaXZhdGVfaAogCiAjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0Lmgi
Ci0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1ZGUgIkFQSUNvbnRlbnRX
b3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50LmgiCkBAIC0zMCw3ICszMCw3
IEBACiAKIEFQSTo6VXNlclNjcmlwdCYgd2Via2l0VXNlclNjcmlwdEdldFVzZXJTY3JpcHQoV2Vi
S2l0VXNlclNjcmlwdCopOwogQVBJOjpVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCopOwotQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3ZWJraXRVc2VyQ29udGVudFdvcmxkKGNvbnN0IGNoYXIqKTsKK0FQSTo6Q29u
dGVudFdvcmxkJiB3ZWJraXRDb250ZW50V29ybGQoY29uc3QgY2hhciopOwogQVBJOjpDb250ZW50
UnVsZUxpc3QmIHdlYmtpdFVzZXJDb250ZW50RmlsdGVyR2V0Q29udGVudFJ1bGVMaXN0KFdlYktp
dFVzZXJDb250ZW50RmlsdGVyKik7CiBXZWJLaXRVc2VyQ29udGVudEZpbHRlciogd2Via2l0VXNl
ckNvbnRlbnRGaWx0ZXJDcmVhdGUoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0PiYmKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkFQ
SVVzZXJDb250ZW50V29ybGQuaCIKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNs
dWRlICJXZWJLaXRFcnJvci5oIgogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCIKQEAg
LTczLDcgKzczLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+UmVtb3RlSQog
ICAgICAgICBnX29iamVjdF93ZWFrX3VucmVmKEdfT0JKRUNUKHdlYlZpZXcpLCByZWludGVycHJl
dF9jYXN0PEdXZWFrTm90aWZ5Pih3ZWJWaWV3RGVzdHJveWVkKSwgdGhpcyk7CiAKICAgICBmb3Ig
KGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA6IG1fdXNlckNvbnRlbnRNYW5hZ2VycykgewotICAg
ICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSh1c2VyQ29udGVudE1hbmFnZXIpLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJp
bnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAg
ICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1
c2VyQ29udGVudE1hbmFnZXIpLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJpbnNw
ZWN0b3IiLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICAgICAg
Z19vYmplY3Rfd2Vha191bnJlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVy
cHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlz
KTsKICAgICB9CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OmhhbgogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1c2Vy
Q29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJDb250
ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0VudHJ5
KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVh
dGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBB
UEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvIGhhbmRs
ZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVz
c2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VD
b250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAkocmV2aXNp
b24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5
ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAorI2luY2x1ZGUgIkFQ
SUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSU5hdmlnYXRpb24uaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhCiAgICAgbV9pbnNwZWN0b3JDbGllbnQg
PSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwog
CiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6
bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3Bl
Y3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQ
cm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50
IHRvIGdldCBub3RpZmllZCBvZiBwYWdlIGxvYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTYgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuaCIKIAotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNp
bmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZjxX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShz
dGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpV
c2VyQ29udGVudFdvcmxkJiB3b3JsZCkKK1JlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdURk1vdmUoY2xp
ZW50KSwgbmFtZSwgd29ybGQpKTsKIH0KIAotV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQorV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGll
bnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQp
CiAgICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCiAgICAgLCBtX25hbWUobmFtZSkKICAg
ICAsIG1fd29ybGQod29ybGQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgJKHJldmlz
aW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisjaW5jbHVk
ZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0K
IAogbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBVc2VyQ29udGVudFdvcmxkOworY2xhc3MgQ29udGVu
dFdvcmxkOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDIxICs1NSwyMSBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKICAg
ICB9OwogCi0gICAgc3RhdGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYpOworICAgIHN0YXRpYyBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGNyZWF0
ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRl
bnRXb3JsZCYpOwogICAgIHZpcnR1YWwgfldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKCk7CiAKICAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgQVBJOjpDb250
ZW50V29ybGRCYXNlJiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KKyAgICBBUEk6
OkNvbnRlbnRXb3JsZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKICAgICBD
bGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQogCiBwcml2YXRlOgot
ICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25z
dCBTdHJpbmcmLCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcihzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3RyaW5nJiwgQVBJOjpDb250
ZW50V29ybGQmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IG1fY2xpZW50OwogICAg
IFN0cmluZyBtX25hbWU7Ci0gICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsK
KyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IG1fd29ybGQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHJl
dmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElDb250ZW50V29y
bGQuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNl
clNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgpAQCAtMTA0LDE3ICsxMDMsMTcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkUAogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQod2ViUHJvY2Vzc1By
b3h5KS5pc05ld0VudHJ5KQogICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAotICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuY29u
dGVudFdvcmxkcy5pc0VtcHR5KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgd29ybGQgOiBtX2Nv
bnRlbnRXb3JsZHMpCiAgICAgICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMuYXBwZW5k
KHdvcmxkLmtleS0+d29ybGREYXRhKCkpOwogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlclNj
cmlwdHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8gdXNlclNjcmlwdCA6IG1fdXNlclNjcmlw
dHMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6VXNlclNjcmlwdD4oKSkKLSAgICAgICAgcGFyYW1ldGVy
cy51c2VyU2NyaXB0cy5hcHBlbmQoeyB1c2VyU2NyaXB0LT5pZGVudGlmaWVyKCksIHVzZXJTY3Jp
cHQtPnVzZXJDb250ZW50V29ybGQoKS5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQtPnVzZXJTY3Jp
cHQoKSB9KTsKKyAgICAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0cy5hcHBlbmQoeyB1c2VyU2Ny
aXB0LT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIo
KSwgdXNlclNjcmlwdC0+dXNlclNjcmlwdCgpIH0pOwogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMu
dXNlclN0eWxlU2hlZXRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChhdXRvIHVzZXJTdHlsZVNoZWV0
IDogbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6VXNlclN0eWxlU2hlZXQ+
KCkpCi0gICAgICAgIHBhcmFtZXRlcnMudXNlclN0eWxlU2hlZXRzLmFwcGVuZCh7IHVzZXJTdHls
ZVNoZWV0LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCku
aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKSB9KTsKKyAgICAg
ICAgcGFyYW1ldGVycy51c2VyU3R5bGVTaGVldHMuYXBwZW5kKHsgdXNlclN0eWxlU2hlZXQtPmlk
ZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQtPmNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIoKSwg
dXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkgfSk7CiAKICAgICBBU1NFUlQocGFyYW1l
dGVycy5tZXNzYWdlSGFuZGxlcnMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGhhbmRsZXIg
OiBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy52YWx1ZXMoKSkKQEAgLTE0NiwyMSArMTQ1LDIxIEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KICAgICB3ZWJQcm9jZXNz
UHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNl
KEFQSTo6Q29udGVudFdvcmxkQmFzZSYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQog
ewotICAgIGlmICgmd29ybGQgPT0gJkFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSkKKyAgICBpZiAoJndvcmxkID09ICZBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3Js
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGVudFdv
cmxkcy5hZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNz
LnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRX
b3JsZHMoeyB3b3JsZC53b3JsZERhdGEoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250
ZW50V29ybGRzKHsgd29ybGQud29ybGREYXRhKCkgfSksIGlkZW50aWZpZXIoKSk7CiAgICAgfQog
fQogCi1ib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpzaG91bGRTZW5kUmVtb3Zl
VXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQsIHVu
c2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKQorYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6Q29udGVu
dFdvcmxkJiB3b3JsZCwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCiB7Ci0gICAgaWYg
KCZ3b3JsZCA9PSAmQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKQorICAgIGlm
ICgmd29ybGQgPT0gJkFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gaXQgPSBtX2NvbnRlbnRXb3JsZHMuZmluZCgm
d29ybGQpOwpAQCAtMTc0LDMxICsxNzMsMzEgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6c2hvdQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3b3JsZCwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCit2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50V29ybGRVc2VzKEFQSTo6
Q29udGVudFdvcmxkJiB3b3JsZCwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCiB7Ci0g
ICAgaWYgKHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51
bWJlck9mVXNlc1RvUmVtb3ZlKSkgeworICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdv
cmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewogICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3Muc2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxk
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHBy
b2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250
ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogICAgIH0K
IH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRl
bnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+
JiB3b3JsZHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250
ZW50V29ybGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+JiB3
b3JsZHMpCiB7CiAgICAgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkc1RvUmVt
b3ZlOwogICAgIGZvciAoYXV0byYgd29ybGRVc2VQYWlyIDogd29ybGRzKSB7Ci0gICAgICAgIGlm
IChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKCp3b3JsZFVzZVBhaXIu
a2V5LmdldCgpLCB3b3JsZFVzZVBhaXIudmFsdWUpKQorICAgICAgICBpZiAoc2hvdWxkU2VuZFJl
bW92ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKCp3b3JsZFVzZVBhaXIua2V5LmdldCgpLCB3b3JsZFVz
ZVBhaXIudmFsdWUpKQogICAgICAgICAgICAgd29ybGRzVG9SZW1vdmUuYXBwZW5kKHdvcmxkVXNl
UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNz
IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSks
IGlkZW50aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSBpbW1lZGlhdGVseSkKIHsKLSAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxk
PiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOworICAgIFJlZjxBUEk6OkNv
bnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LmNvbnRlbnRXb3JsZCgpOwogCi0gICAgYWRk
VXNlckNvbnRlbnRXb3JsZFVzZSh3b3JsZC5nZXQoKSk7CisgICAgYWRkQ29udGVudFdvcmxkVXNl
KHdvcmxkLmdldCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1
c2VyU2NyaXB0KTsKIApAQCAtMjA4LDMzICsyMDcsMzMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKIHsKLSAgICBS
ZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRX
b3JsZCgpOworICAgIFJlZjxBUEk6OkNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LmNv
bnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCiAg
ICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVt
b3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIAotICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdv
cmxkLmdldCgpLCAxKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLmdldCgpLCAx
KTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNl
clNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6Q29udGVudFdvcmxk
JiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAg
ICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3Zl
QWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNj
cmlwdCkgewotICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9
PSAmd29ybGQ7CisgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkgPT0g
JndvcmxkOwogICAgIH0pOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQs
IHVzZXJTY3JpcHRzUmVtb3ZlZCk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZCwg
dXNlclNjcmlwdHNSZW1vdmVkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogewotICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0
cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+PiB3b3JsZHM7CisgICAgSGFzaENvdW50ZWRTZXQ8UmVm
UHRyPEFQSTo6Q29udGVudFdvcmxkPj4gd29ybGRzOwogICAgIGZvciAoYXV0byB1c2VyU2NyaXB0
IDogbV91c2VyU2NyaXB0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpVc2VyU2NyaXB0PigpKQotICAg
ICAgICB3b3JsZHMuYWRkKGNvbnN0X2Nhc3Q8QVBJOjpVc2VyQ29udGVudFdvcmxkKj4oJnVzZXJT
Y3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSkpOworICAgICAgICB3b3JsZHMuYWRkKGNvbnN0X2Nh
c3Q8QVBJOjpDb250ZW50V29ybGQqPigmdXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkpKTsKIAog
ICAgIFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzOwogICAg
IHdvcmxkSWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh3b3JsZHMuc2l6ZSgpKTsK
QEAgLTI0NiwxNCArMjQ1LDE0IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW8KIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIAotICAgIHJl
bW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkcyk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxk
VXNlcyh3b3JsZHMpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsK
LSAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVz
ZXJDb250ZW50V29ybGQoKTsKKyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IHdvcmxkID0gdXNl
clN0eWxlU2hlZXQuY29udGVudFdvcmxkKCk7CiAKLSAgICBhZGRVc2VyQ29udGVudFdvcmxkVXNl
KHdvcmxkLmdldCgpKTsKKyAgICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQuZ2V0KCkpOwogCiAg
ICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7
CiAKQEAgLTI2MywzMyArMjYyLDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmFkZFUKIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNl
clN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAg
UmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2VyQ29u
dGVudFdvcmxkKCk7CisgICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHls
ZVNoZWV0LmNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpCiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5
bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVT
aGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKLSAgICByZW1v
dmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZC5nZXQoKSwgMSk7CisgICAgcmVtb3ZlQ29udGVu
dFdvcmxkVXNlcyh3b3JsZC5nZXQoKSwgMSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29y
bGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1
dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdv
cmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJT
dHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0
Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0
KSB7Ci0gICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKSA9
PSAmd29ybGQ7CisgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPmNvbnRlbnRXb3JsZCgp
ID09ICZ3b3JsZDsKICAgICB9KTsKIAotICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdv
cmxkLCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2Vz
KHdvcmxkLCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKIHsKLSAgICBIYXNo
Q291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4gd29ybGRzOworICAgIEhh
c2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+IHdvcmxkczsKICAgICBmb3Ig
KGF1dG8gdXNlclN0eWxlU2hlZXQgOiBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHNPZlR5cGU8
QVBJOjpVc2VyU3R5bGVTaGVldD4oKSkKLSAgICAgICAgd29ybGRzLmFkZChjb25zdF9jYXN0PEFQ
STo6VXNlckNvbnRlbnRXb3JsZCo+KCZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgp
KSk7CisgICAgICAgIHdvcmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6OkNvbnRlbnRXb3JsZCo+KCZ1
c2VyU3R5bGVTaGVldC0+Y29udGVudFdvcmxkKCkpKTsKIAogICAgIFZlY3RvcjxDb250ZW50V29y
bGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzOwogICAgIHdvcmxkSWRlbnRpZmllcnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh3b3JsZHMuc2l6ZSgpKTsKQEAgLTMwMSw3ICszMDAsNyBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAKICAgICBtX3VzZXJTdHls
ZVNoZWV0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3Js
ZFVzZXMod29ybGRzKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkcyk7CiB9CiAK
IGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYgaGFuZGxlcikKQEAgLTMxMyw3ICszMTIs
NyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYWRkVXNlckNvbnRlbnRXb3JsZFVzZSh3b3Js
ZCk7CisgICAgYWRkQ29udGVudFdvcmxkVXNlKHdvcmxkKTsKIAogICAgIG1fc2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzLmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCkBAIC0zMjMs
NyArMzIyLDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVQogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpV
c2VyQ29udGVudFdvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBB
UEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnMuYmVnaW4oKSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0g
bmFtZSAmJiBpdC0+dmFsdWUtPndvcmxkKCkuaWRlbnRpZmllcigpID09IHdvcmxkLmlkZW50aWZp
ZXIoKSkgewpAQCAtMzMyLDEzICszMzEsMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtbwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1v
dmUoaXQpOwogCi0gICAgICAgICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwg
MSk7CisgICAgICAgICAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLCAxKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJD
b250ZW50V29ybGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7
CiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkp
OwpAQCAtMzUyLDcgKzM1MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogCi0gICAgcmVtb3ZlVXNlckNv
bnRlbnRXb3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOworICAgIHJlbW92ZUNvbnRlbnRX
b3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDggKzQxLDcgQEAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXJyYXk7CiBjbGFz
cyBDb250ZW50UnVsZUxpc3Q7Ci1jbGFzcyBDb250ZW50V29ybGRCYXNlOwotY2xhc3MgVXNlckNv
bnRlbnRXb3JsZDsKK2NsYXNzIENvbnRlbnRXb3JsZDsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFz
cyBVc2VyU3R5bGVTaGVldDsKIH0KQEAgLTgyLDIxICs4MSwyMSBAQCBwdWJsaWM6CiAgICAgQVBJ
OjpBcnJheSYgdXNlclNjcmlwdHMoKSB7IHJldHVybiBtX3VzZXJTY3JpcHRzLmdldCgpOyB9CiAg
ICAgdm9pZCBhZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYsIEluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYp
OwotICAgIHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7
CisgICAgdm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAg
IHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTdHls
ZVNoZWV0cygpIHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRzLmdldCgpOyB9CiAgICAgdm9pZCBh
ZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0Jik7CiAgICAgdm9pZCByZW1vdmVV
c2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0Jik7Ci0gICAgdm9pZCByZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoQVBJOjpDb250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cygpOwogCi0gICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudChBUEk6
OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KEFQSTo6
Q29udGVudFdvcmxkJik7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIHdhcyBhIG5h
bWUgY29uZmxpY3QuCiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXImKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZv
ck5hbWUoY29uc3QgU3RyaW5nJiwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7Ci0gICAgdm9pZCBy
ZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOworICAg
IHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmLCBBUEk6
OkNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhB
UEk6OkNvbnRlbnRXb3JsZCYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAg
ICB2b2lkIGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKQEAgLTExNywx
NyArMTE2LDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0
X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKLSAgICB2
b2lkIGFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGRCYXNlJik7Ci0gICAg
dm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQmLCB1
bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7Ci0gICAgdm9pZCByZW1vdmVVc2VyQ29udGVu
dFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4m
KTsKLSAgICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2UoQVBJ
OjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOworICAg
IHZvaWQgYWRkQ29udGVudFdvcmxkVXNlKEFQSTo6Q29udGVudFdvcmxkJik7CisgICAgdm9pZCBy
ZW1vdmVDb250ZW50V29ybGRVc2VzKEFQSTo6Q29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVy
T2ZVc2VzVG9SZW1vdmUpOworICAgIHZvaWQgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyhIYXNoQ291
bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGQ+PiYpOworICAgIGJvb2wgc2hvdWxkU2Vu
ZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6Q29udGVudFdvcmxkJiwgdW5zaWduZWQg
bnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwogCiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBtX3By
b2Nlc3NlczsKICAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyU2NyaXB0czsKICAgICBSZWY8QVBJ
OjpBcnJheT4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnM7Ci0gICAg
SGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkQmFzZT4+IG1fY29udGVudFdv
cmxkczsKKyAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGQ+PiBtX2Nv
bnRlbnRXb3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYWtI
YXNoU2V0PE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3NlczsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI2NSw3ICsxMjY1LDYgQEAKIAkJN0M4ODJERjcxQzdF
OTk2NTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREYzMUM3RTk5NUUwMDZCRjczMSAvKiBf
V0tVc2VyQ29udGVudFdvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0M4ODJERjkxQzdFOTk2RjAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50
V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M4ODJERjUxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJbnRl
cm5hbC5oICovOyB9OwogCQk3Qzg4MkRGQTFDN0U5OTczMDA2QkY3MzEgLyogV0tVc2VyU2NyaXB0
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4ODJERjYxQzdFOTk1RTAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3Qzg4MkRGRDFDN0U5
OUE4MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJERkMxQzdFOTlBNjAwNkJGNzMxIC8qIEFQ
SVVzZXJDb250ZW50V29ybGQuaCAqLzsgfTsKIAkJN0M4OUQyOTQxQTY3MTIyRjAwM0E1RkRFIC8q
IEFQSVVzZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmggKi87IH07
CiAJCTdDODlEMjk4MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyOTYxQTY3
NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmggKi87IH07CiAJCTdDODlEMjlD
MUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5QTFBNjc4MzdCMDAzQTVG
REUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTQ0LDggKzQxNDMsNiBAQAogCQk3Qzg4MkRGNDFD
N0U5OTVFMDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1VzZXJDb250ZW50V29ybGQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODgyREY1MUM3RTk5NUUwMDZCRjczMSAvKiBfV0tVc2Vy
Q29udGVudFdvcmxkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLVXNlckNvbnRlbnRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDODgyREY2MUM3RTk5NUUwMDZCRjczMSAvKiBXS1VzZXJTY3JpcHRQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlclNjcmlwdFByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4ODJERkIxQzdFOTlBNjAwNkJGNzMxIC8qIEFQ
SVVzZXJDb250ZW50V29ybGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJVXNlckNvbnRlbnRXb3JsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTdDODgyREZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50V29ybGQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVz
ZXJTY3JpcHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlclNjcmlw
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg5RDI5NTFBNjc1M0IyMDAzQTVG
REUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Qzg5RDI5NjFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NDYsOCArODc0Myw2IEBACiAJ
CQkJMUE0RDY2NDcxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggKi8sCiAJCQkJNTFE
MTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZVRhc2suY3BwICovLAogCQkJCTUx
RDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVUYXNrLmggKi8sCi0JCQkJN0M4
ODJERkIxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuY3BwICovLAotCQkJ
CTdDODgyREZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggKi8sCiAJ
CQkJN0NCMzY1QUYxRDMxREQxRTAwNzE1OENBIC8qIEFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCAq
LywKIAkJCQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgKi8s
CiAJCQkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKQEAg
LTEwMjAxLDcgKzEwMTk2LDYgQEAKIAkJCQlCQ0UyMzE1RDEyMkMzMENBMDBENUMzNUEgLyogQVBJ
VVJMUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MEExRDIxMjJERDU1RTAwQ0M4QzUw
IC8qIEFQSVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjExM0UyNTEyNkNFMTgy
MDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3Qzg4MkRGRDFDN0U5OUE4MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NCMzY1QjExRDMxREQxRTAwNzE1OENBIC8qIEFQSVVzZXJJbml0aWF0
ZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMjk0MUE2NzEyMkYwMDNBNUZERSAv
KiBBUElVc2VyU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg3ODYyNDFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCogV2ViVXNlckNvbnRlbgogICAgIHJldHVybiBpdGVyYXRvciA9PSB3b3JsZE1hcCgpLmVu
ZCgpID8gbnVsbHB0ciA6IGl0ZXJhdG9yLT52YWx1ZS5maXJzdC5nZXQoKTsKIH0KIAotdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGQoY29uc3Qgc3RkOjpw
YWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkKQordm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29udGVu
dFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGQpCiB7CiAgICAgQVNTRVJUKHdvcmxkLmZp
cnN0KTsKICAgICBpZiAod29ybGQuZmlyc3QgPT0gcGFnZUNvbnRlbnRXb3JsZElkZW50aWZpZXIo
KSkKQEAgLTExOSwxMyArMTE5LDEzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjph
ZGRVc2VyQ28KICAgICB9KTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFk
ZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRl
bnRpZmllciwgU3RyaW5nPj4mIHdvcmxkcykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRl
bnRpZmllciwgU3RyaW5nPj4mIHdvcmxkcykKIHsKICAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29y
bGRzKQotICAgICAgICBhZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkKTsKKyAgICAgICAgYWRkQ29u
dGVudFdvcmxkKHdvcmxkKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZVVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVy
PiYgd29ybGRJZGVudGlmaWVycykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1v
dmVDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYgd29y
bGRJZGVudGlmaWVycykKIHsKICAgICBmb3IgKGF1dG8mIHdvcmxkSWRlbnRpZmllciA6IHdvcmxk
SWRlbnRpZmllcnMpIHsKICAgICAgICAgQVNTRVJUKHdvcmxkSWRlbnRpZmllcik7CkBAIC0xMzMs
NyArMTMzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZQogCiAg
ICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0
aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIENvbnRlbnRXb3JsZCAoaWQ9
JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0OSw3ICsxNDks
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjCiAgICAgZm9yIChj
b25zdCBhdXRvJiB1c2VyU2NyaXB0RGF0YSA6IHVzZXJTY3JpcHRzKSB7CiAgICAgICAgIGF1dG8g
aXQgPSB3b3JsZE1hcCgpLmZpbmQodXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiVHJ5aW5nIHRvIGFkZCBhIFVzZXJTY3JpcHQgdG8gYSBVc2VyQ29udGVudFdvcmxkIChp
ZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU2NyaXB0RGF0YS53b3Js
ZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWlu
ZyB0byBhZGQgYSBVc2VyU2NyaXB0IHRvIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikg
dGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNjIsNyAr
MTYyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZQogewogICAg
IGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICBpZiAoaXQg
PT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byBy
ZW1vdmUgYSBVc2VyU2NyaXB0IGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQg
IikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVzZXJTY3JpcHQgZnJvbSBh
IENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29y
bGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbAog
ICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29ybGRJZGVudGlmaWVycykgewogICAg
ICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRpZmllcik7CiAgICAgICAg
IGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMo
IlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTY3JpcHRzIGZyb20gYSBVc2VyQ29udGVudFdvcmxk
IChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUg
YWxsIFVzZXJTY3JpcHRzIGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0
IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdAogICAgIGZvciAoY29uc3QgYXV0byYgdXNlclN0
eWxlU2hlZXREYXRhIDogdXNlclN0eWxlU2hlZXRzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3b3Js
ZE1hcCgpLmZpbmQodXNlclN0eWxlU2hlZXREYXRhLndvcmxkSWRlbnRpZmllcik7CiAgICAgICAg
IGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMo
IlRyeWluZyB0byBhZGQgYSBVc2VyU3R5bGVTaGVldCB0byBhIFVzZXJDb250ZW50V29ybGQgKGlk
PSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHVzZXJTdHlsZVNoZWV0RGF0YS53
b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRy
eWluZyB0byBhZGQgYSBVc2VyU3R5bGVTaGVldCB0byBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgdXNlclN0eWxlU2hlZXREYXRhLndvcmxkSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpyZW1vdmVVc2UKIHsKICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRp
Zmllcik7CiAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgV1RGTG9n
QWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgVXNlclN0eWxlU2hlZXQgZnJvbSBhIFVzZXJDb250
ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVt
b3ZlIGEgVXNlclN0eWxlU2hlZXQgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIp
IHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbAogICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVy
IDogd29ybGRJZGVudGlmaWVycykgewogICAgICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5k
KHdvcmxkSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7
Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTdHls
ZVNoZWV0cyBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU3R5bGVTaGVldHMgZnJvbSBh
IENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29y
bGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclNjCiAgICAgZm9yIChhdXRvJiBoYW5kbGVyIDogc2NyaXB0TWVzc2FnZUhhbmRsZXJzKSB7
CiAgICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQoaGFuZGxlci53b3JsZElkZW50aWZp
ZXIpOwogICAgICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gYWRkIGEgVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIHRv
IGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3Qu
IiwgaGFuZGxlci53b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIlRyeWluZyB0byBhZGQgYSBVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgdG8gYSBD
b250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIGhhbmRs
ZXIud29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpyZW1vdmVVc2UKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogICAgIGF1
dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgPT0g
d29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1v
dmUgYSBVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlk
PSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVyIGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0
aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpyZW1vdmVBbGwKICAgICBmb3IgKGF1dG8mIHdvcmxkSWRlbnRpZmllciA6
IHdvcmxkSWRlbnRpZmllcnMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3
b3JsZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewot
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0
aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMg
bm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCShy
ZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDgg
QEAgcHVibGljOgogCiAgICAgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGRGb3JJZGVu
dGlmaWVyKENvbnRlbnRXb3JsZElkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRVc2VyQ29udGVu
dFdvcmxkcyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0
cmluZz4+Jik7Ci0gICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjxD
b250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+Jik7CisgICAgdm9pZCBhZGRDb250ZW50V29y
bGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5n
Pj4mKTsKKyAgICB2b2lkIGFkZENvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdv
cmxkSWRlbnRpZmllciwgU3RyaW5nPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoVmVjdG9y
PFdlYlVzZXJTY3JpcHREYXRhPiYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAg
IHZvaWQgYWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU3R5bGVTaGVldERh
dGE+Jik7CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3Rv
cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+Jik7CkBAIC05MSw3ICs5MSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50
aWZpZXI+Jik7CisgICAgdm9pZCByZW1vdmVDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250
ZW50V29ybGRJZGVudGlmaWVyPiYpOwogCiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KENvbnRl
bnRXb3JsZElkZW50aWZpZXIsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlm
aWVyPiYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw4ICsyNCw4IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyIHsKLSAgICBBZGRVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8c3RkOjpwYWlyPFdl
YktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4gd29ybGRzKTsKLSAgICBSZW1v
dmVVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVy
PiB3b3JsZElkZW50aWZpZXJzKTsKKyAgICBBZGRDb250ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBh
aXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+PiB3b3JsZHMpOworICAg
IFJlbW92ZUNvbnRlbnRXb3JsZHMoVmVjdG9yPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmll
cj4gd29ybGRJZGVudGlmaWVycyk7CiAKICAgICBBZGRVc2VyU2NyaXB0cyhWZWN0b3I8c3RydWN0
IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGE+IHVzZXJTY3JpcHRzLCBlbnVtOmJvb2wgV2ViS2l0
OjpJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpOwogICAgIFJlbW92ZVVz
ZXJTY3JpcHQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwg
dWludDY0X3QgaWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNyw3ICs3
MDcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgZm9y
IChjb25zdCBhdXRvJiBpdGVyYXRvciA6IHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpCiAg
ICAgICAgIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iu
a2V5KTsKIAotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxk
cyhwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJv
bGxlci0+YWRkQ29udGVudFdvcmxkcyhwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzKTsKICAg
ICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdHMoV1RGTW92ZShwYXJhbWV0
ZXJzLnVzZXJTY3JpcHRzKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0cyhwYXJhbWV0ZXJzLnVz
ZXJTdHlsZVNoZWV0cyk7CiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcnMocGFyYW1ldGVycy5tZXNzYWdlSGFuZGxlcnMpOwpAQCAtMzQzMiw3
ICszNDMyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcgogCiB2
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkKHdvcmxk
RGF0YSk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRXb3JsZCh3b3Js
ZERhdGEpOwogICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1l
dGVycyksIHdvcmxkRGF0YS5maXJzdCwgY2FsbGJhY2tJRCk7CiB9CiAKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NzUyNSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIw
LTAyLTI2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgX1dLVXNlckNvbnRlbnRXb3JsZCBzaG91bGQgYmUgYSB3cmFwcGVyIGFyb3VuZCBXS0Nv
bnRlbnRXb3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW06
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAgICAgKFRFU1QpOgorCiAy
MDIwLTAyLTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFRlc3RXZWJLaXRBUEkgYW5kIFdlYktpdFRlc3RSdW5uZXIgc2hvdWxkIGhhdmUgYnVu
ZGxlIGlkZW50aWZpZXJzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1VzZXJDb250ZW50V29ybGQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tCShyZXZpc2lvbiAyNTczNjkp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50V29y
bGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCwxNSBAQAogI2ltcG9ydCA8V2ViS2l0
L19XS1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLVRFU1Qo
VXNlckNvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGQpCitURVNUKENvbnRlbnRXb3JsZCwgTm9ybWFs
V29ybGQpCiB7CiAgICAgUmV0YWluUHRyPFdLVXNlclNjcmlwdD4gYmFzaWNVc2VyU2NyaXB0ID0g
YWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCIiIGluamVjdGlv
blRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJh
bWVPbmx5OllFU10pOwotICAgIEVYUEVDVF9FUShbYmFzaWNVc2VyU2NyaXB0IF91c2VyQ29udGVu
dFdvcmxkXSwgW19XS1VzZXJDb250ZW50V29ybGQgbm9ybWFsV29ybGRdKTsKKyAgICBFWFBFQ1Rf
TkUoW2Jhc2ljVXNlclNjcmlwdCBfdXNlckNvbnRlbnRXb3JsZF0sIFtfV0tVc2VyQ29udGVudFdv
cmxkIG5vcm1hbFdvcmxkXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtiYXNpY1VzZXJTY3JpcHQg
X3VzZXJDb250ZW50V29ybGRdLm5hbWUsIFtfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdvcmxk
XS5uYW1lKTsKICAgICBFWFBFQ1RfTlVMTChbYmFzaWNVc2VyU2NyaXB0IF91c2VyQ29udGVudFdv
cmxkXS5uYW1lKTsKIH0KIAotVEVTVChVc2VyQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJT
Y3JpcHQpCitURVNUKENvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGRVc2VyU2NyaXB0KQogewogICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIApAQCAtNzYsMTYgKzc3
LDE3IEBAIFRFU1QoVXNlckNvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGRVc2VyU2MKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLVRFU1QoVXNlckNvbnRlbnRXb3Js
ZCwgSXNvbGF0ZWRXb3JsZCkKK1RFU1QoQ29udGVudFdvcmxkLCBJc29sYXRlZFdvcmxkKQogewog
ICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiBpc29sYXRlZFdvcmxkID0gW19XS1Vz
ZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwogICAgIEVYUEVDVF9X
S19TVFJFUShbaXNvbGF0ZWRXb3JsZCBuYW1lXSwgQCJUZXN0V29ybGQiKTsKIAogICAgIFJldGFp
blB0cjxXS1VzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFs
bG9jXSBfaW5pdFdpdGhTb3VyY2U6QCIiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFUyBsZWdhY3lXaGl0ZWxp
c3Q6QFtdIGxlZ2FjeUJsYWNrbGlzdDpAW10gdXNlckNvbnRlbnRXb3JsZDppc29sYXRlZFdvcmxk
LmdldCgpXSk7Ci0gICAgRVhQRUNUX0VRKFt1c2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxkXSwg
aXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgRVhQRUNUX05FKFt1c2VyU2NyaXB0IF91c2VyQ29u
dGVudFdvcmxkXSwgaXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt1
c2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxkXS5uYW1lLCBbaXNvbGF0ZWRXb3JsZCBuYW1lXSk7
CiB9CiAKLVRFU1QoVXNlckNvbnRlbnRXb3JsZCwgSXNvbGF0ZWRXb3JsZFVzZXJTY3JpcHQpCitU
RVNUKENvbnRlbnRXb3JsZCwgSXNvbGF0ZWRXb3JsZFVzZXJTY3JpcHQpCiB7CiAgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391814</attachid>
            <date>2020-02-26 17:06:08 -0800</date>
            <delta_ts>2020-02-26 20:29:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208274-20200226170604.patch</filename>
            <type>text/plain</type>
            <size>89464</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0wMi0yNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIF9XS1VzZXJDb250
ZW50V29ybGQgc2hvdWxkIGJlIGEgd3JhcHBlciBhcm91bmQgV0tDb250ZW50V29ybGQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODI3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgU1BJcyB3
ZXJlIGdldHRpbmcgY29uZnVzZWQgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBVcGRhdGVkIEFQ
SSB0ZXN0cyB3aGljaCBleHBlY3RlZCBwb2ludGVyIGVxdWFsaXR5LCB3aGljaCBpcyBubyBsb25n
ZXIgdHJ1ZSBvciBpbXBvcnRhbnQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5o
OgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6Q29udGVu
dFdvcmxkQmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
V29ybGQuaDoKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkQmFzZTo6aWRlbnRpZmllciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZEJhc2U6Om5hbWUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjp3b3JsZERhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGRCYXNlOjpDb250ZW50V29y
bGRCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRXb3JsZC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJTY3JpcHQ6OlVzZXJTY3JpcHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoQVBJOjpVc2VyU3R5bGVTaGVldDo6VXNl
clN0eWxlU2hlZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAo
V0tQYWdlR3JvdXBBZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXS1BhZ2VHcm91cEFkZFVz
ZXJTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1VzZXJTY3JpcHRSZWYuY3Bw
OgorICAgICAgICAoV0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbToKKyAgICAgICAgKC1bV0tDb250ZW50
V29ybGQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciByZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6XSk6
CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2VyU2NyaXB0
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNl
ckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX2Fk
ZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAg
KC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyRm9y
TmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfcmVtb3ZlQWxsU2NyaXB0TWVzc2FnZUhhbmRsZXJzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0
Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGlt
ZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX2luaXRXaXRo
U291cmNlOmluamVjdGlvblRpbWU6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0ZWxpc3Q6bGVn
YWN5QmxhY2tsaXN0OnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICgtW1dLVXNlclNjcmlw
dCBfaW5pdFdpdGhTb3VyY2U6aW5qZWN0aW9uVGltZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdo
aXRlbGlzdDpsZWdhY3lCbGFja2xpc3Q6YXNzb2NpYXRlZFVSTDp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW06CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50V29ybGQgX2luaXRXaXRoTmFtZTpdKToKKyAgICAgICAgKC1bX1dLVXNl
ckNvbnRlbnRXb3JsZCBfaW5pdF0pOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudFdvcmxkIF9p
bml0V2l0aENvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKCtbX1dLVXNlckNvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdv
cmxkXSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50V29ybGQgbmFtZV0pOgorICAgICAgICAo
LVtfV0tVc2VyQ29udGVudFdvcmxkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRXb3JsZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVT
aGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5Ol0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTpmb3JNYWluRnJhbWVPbmx5OmxlZ2FjeVdoaXRl
bGlzdDpsZWdhY3lCbGFja2xpc3Q6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKC1bX1dL
VXNlclN0eWxlU2hlZXQgaW5pdFdpdGhTb3VyY2U6Zm9yTWFpbkZyYW1lT25seTpsZWdhY3lXaGl0
ZWxpc3Q6bGVnYWN5QmxhY2tsaXN0OmJhc2VVUkw6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6Ondvcmxk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6YWRkUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRDb250ZW50V29ybGRVc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUNvbnRlbnRXb3JsZFVzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVz
ZXJDb250ZW50V29ybGRVc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6c2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVz
c2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkQ29udGVudFdvcmxk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQ29u
dGVudFdvcmxkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlckNvbnRlbnRXb3JsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9wcm9jZXNzRGlzcGxheU5h
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZCk6CisKIDIwMjAtMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIEFsbG93IEdQVVByb2Nlc3MgdG8gc2V0IHRoZSBBdWRpb1Nl
c3Npb24gQ2F0ZWdvcnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjU3MzY5KQorKysgU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw2IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW8KIFVJUHJvY2Vzcy9BUEkv
QVBJT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVUYXNrLmNwcAotVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudFdvcmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAog
VUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgVGV4dENoZWNrZXIsCiAgICAgICAgIFVSTFNjaGVtZVRhc2ssCiAgICAg
ICAgIFVzZXJDb250ZW50Q29udHJvbGxlciwKLSAgICAgICAgVXNlckNvbnRlbnRXb3JsZCwKICAg
ICAgICAgVXNlckluaXRpYXRlZEFjdGlvbiwKICAgICAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLAogICAgICAgICBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUx
LDEyICszNTEsNiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwCiAg
ICAgICAgIHdyYXBwZXIgPSBbV0tDb250ZW50V29ybGQgYWxsb2NdOwogICAgICAgICBicmVhazsK
IAotICAgIGNhc2UgVHlwZTo6VXNlckNvbnRlbnRXb3JsZDoKLSAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVu
dFdvcmxkIGFsbG9jXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBUeXBlOjpVc2VySW5pdGlhdGVkQWN0aW9uOgog
ICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJJbml0aWF0ZWRBY3Rpb24gYWxsb2NdOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29y
bGQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAK
LSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQ29udGVudFdvcmxk
U2hhcmVkLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCi1Db250ZW50V29ybGRCYXNlOjpDb250
ZW50V29ybGRCYXNlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorQ29udGVudFdvcmxkOjpDb250
ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCiAgICAgOiBtX25hbWUobmFtZSkKIHsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKQEAgLTc2LDIxICs3NSw2IEBAIENvbnRl
bnRXb3JsZCYgQ29udGVudFdvcmxkOjpkZWZhdWx0Q2xpZW4KICAgICByZXR1cm4gKndvcmxkLmdl
dCgpOwogfQogCi1Db250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2UobmFtZSkKLXsKLX0KLQotQ29udGVudFdvcmxk
OjpDb250ZW50V29ybGQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKGlkZW50aWZpZXIpCi17Ci19Ci0KLUNvbnRlbnRXb3Js
ZDo6Q29udGVudFdvcmxkKGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJDb250ZW50V29ybGQp
Ci0gICAgOiBDb250ZW50V29ybGRCYXNlKHVzZXJDb250ZW50V29ybGQuaWRlbnRpZmllcigpLCB1
c2VyQ29udGVudFdvcmxkLm5hbWUoKSkKLXsKLX0KLQogQ29udGVudFdvcmxkOjp+Q29udGVudFdv
cmxkKCkKIHsKICAgICBpZiAobmFtZSgpLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaAkocmV2aXNpb24gMjU3MzY5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSwzMiArMzEsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgVXNlckNv
bnRlbnRXb3JsZDsKLQotY2xhc3MgQ29udGVudFdvcmxkQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+Q29udGVudFdvcmxkQmFzZSgpID0gZGVmYXVsdDsKLQotICAgIFdlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KLSAgICBzdGQ6OnBhaXI8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBXVEY6OlN0
cmluZz4gd29ybGREYXRhKCkgY29uc3QgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIENvbnRlbnRXb3JsZEJhc2Uo
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpD
b250ZW50V29ybGRJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgICAgIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgfQotICAgIENvbnRlbnRXb3JsZEJhc2UoV2ViS2l0OjpDb250ZW50V29y
bGRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbmFtZShuYW1lKSB7IH0K
LXByaXZhdGU6Ci0gICAgV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKLSAgICBXVEY6OlN0cmluZyBtX25hbWU7Ci19OwotCi1jbGFzcyBDb250ZW50V29ybGQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29y
bGQ+LCBwdWJsaWMgQ29udGVudFdvcmxkQmFzZSB7CitjbGFzcyBDb250ZW50V29ybGQgZmluYWwg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbnRlbnRXb3JsZD4gc2hhcmVkV29ybGRXaXRo
TmFtZShjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBDb250ZW50V29ybGQmIHBhZ2VD
b250ZW50V29ybGQoKTsKQEAgLTY0LDEzICszOSwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5Db250ZW50V29ybGQoKTsKIAotICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBPYmplY3RJ
bXBsOjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IE9iamVjdEltcGw6
OmRlcmVmKCk7IH0KKyAgICBXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgc3RkOjpwYWlyPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHsgbV9pZGVudGlmaWVyLCBtX25hbWUgfTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IENvbnRl
bnRXb3JsZChXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIpOwotICAgIGV4cGxpY2l0IENv
bnRlbnRXb3JsZChjb25zdCBVc2VyQ29udGVudFdvcmxkJik7CisgICAgZXhwbGljaXQgQ29udGVu
dFdvcmxkKFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgICAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KKworICAgIFdlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV1RGOjpTdHJpbmcgbV9uYW1lOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRX
b3JsZFNoYXJlZC5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLQotUmVmPFVzZXJDb250ZW50V29ybGQ+
IFVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRXb3JsZChuYW1lKSk7Ci19
Ci0KLVJlZjxVc2VyQ29udGVudFdvcmxkPiBVc2VyQ29udGVudFdvcmxkOjpmcm9tQ29udGVudFdv
cmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxkKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVzZXJDb250ZW50V29ybGQoY29udGVudFdvcmxkKSk7Ci19Ci0KLVVzZXJDb250
ZW50V29ybGQmIFVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkKLXsKLSAgICBzdGF0aWMg
VXNlckNvbnRlbnRXb3JsZCogd29ybGQgPSBuZXcgVXNlckNvbnRlbnRXb3JsZChGb3JOb3JtYWxX
b3JsZE9ubHk6Ok5vcm1hbFdvcmxkKTsKLSAgICByZXR1cm4gKndvcmxkOwotfQotCi1Vc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQotICAg
IDogQ29udGVudFdvcmxkQmFzZShuYW1lKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjpVc2Vy
Q29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkKLSAgICA6IENvbnRlbnRXb3JsZEJhc2Uo
V2ViS2l0OjpwYWdlQ29udGVudFdvcmxkSWRlbnRpZmllcigpKQotewotfQotCi1Vc2VyQ29udGVu
dFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IENvbnRlbnRXb3JsZCYgY29udGVudFdvcmxk
KQotICAgIDogQ29udGVudFdvcmxkQmFzZShjb250ZW50V29ybGQuaWRlbnRpZmllcigpLCBjb250
ZW50V29ybGQubmFtZSgpKQotewotfQotCi1Vc2VyQ29udGVudFdvcmxkOjp+VXNlckNvbnRlbnRX
b3JsZCgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
CShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotCi1jbGFzcyBVc2VyQ29udGVudFdvcmxkIGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNvbnRl
bnRXb3JsZD4sIHB1YmxpYyBDb250ZW50V29ybGRCYXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmKTsK
LSAgICBzdGF0aWMgVXNlckNvbnRlbnRXb3JsZCYgbm9ybWFsV29ybGQoKTsKLSAgICBzdGF0aWMg
UmVmPFVzZXJDb250ZW50V29ybGQ+IGZyb21Db250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxk
Jik7Ci0KLSAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudFdvcmxkKCk7Ci0KLSAgICB2b2lkIHJlZigp
IGNvbnN0IGZpbmFsIHsgT2JqZWN0SW1wbDo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBPYmplY3RJbXBsOjpkZXJlZigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgVXNlckNvbnRlbnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIGV4cGxpY2l0IFVz
ZXJDb250ZW50V29ybGQoY29uc3QgQ29udGVudFdvcmxkJik7Ci0KLSAgICBlbnVtIGNsYXNzIEZv
ck5vcm1hbFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07Ci0gICAgZXhwbGljaXQgVXNlckNvbnRl
bnRXb3JsZChGb3JOb3JtYWxXb3JsZE9ubHkpOwotCi19OwotCi19IC8vIG5hbWVzcGFjZSBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAJ
KHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTEgKzM2LDEwIEBAIFdURjo6VVJMIFVz
ZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCkKICAgICByZXR1cm4geyB7IH0sIG1ha2VTdHJp
bmcoInVzZXItc2NyaXB0OiIsICsraWRlbnRpZmllcikgfTsKIH0KIAotVXNlclNjcmlwdDo6VXNl
clNjcmlwdChXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCitVc2VyU2NyaXB0OjpVc2VyU2NyaXB0KFdlYkNvcmU6OlVzZXJTY3JpcHQg
dXNlclNjcmlwdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91c2VyU2NyaXB0
KHVzZXJTY3JpcHQpCiAgICAgLCBtX3dvcmxkKHdvcmxkKQogewogfQogCi0KIH0gLy8gbmFtZXNw
YWNlIEFQSQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclNjcmlwdC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2LDIxICsz
NiwyMSBAQCBjbGFzcyBVc2VyU2NyaXB0IGZpbmFsIDogcHVibGljIE9iamVjdEltCiBwdWJsaWM6
CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGljIFJlZjxVc2VyU2NyaXB0PiBj
cmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0LCBBUEk6OkNvbnRlbnRXb3JsZCYg
d29ybGQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdU
Rk1vdmUodXNlclNjcmlwdCksIHdvcmxkKSk7CiAgICAgfQogCi0gICAgVXNlclNjcmlwdChXZWJD
b3JlOjpVc2VyU2NyaXB0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBVc2VyU2NyaXB0
KFdlYkNvcmU6OlVzZXJTY3JpcHQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBX
ZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0OyB9CiAgICAgCi0gICAgVXNlckNvbnRlbnRXb3JsZCYgdXNlckNvbnRlbnRXb3JsZCgpIHsg
cmV0dXJuIG1fd29ybGQ7IH0KLSAgICBjb25zdCBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVu
dFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIENvbnRlbnRXb3JsZCYgY29u
dGVudFdvcmxkKCkgeyByZXR1cm4gbV93b3JsZDsgfQorICAgIGNvbnN0IENvbnRlbnRXb3JsZCYg
Y29udGVudFdvcmxkKCkgY29uc3QgeyByZXR1cm4gbV93b3JsZDsgfQogICAgIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IG1fdXNlclNjcmlwdDsKLSAgICBSZWY8VXNlckNvbnRl
bnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDcgQEAgV1RGOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVl
VQogICAgIHJldHVybiB7IHsgfSwgbWFrZVN0cmluZygidXNlci1zdHlsZS1zaGVldDoiLCArK2lk
ZW50aWZpZXIpIH07CiB9CiAKLVVzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3Jl
OjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3
b3JsZCkKK1VzZXJTdHlsZVNoZWV0OjpVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgIDogbV91
c2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCkKICAgICAsIG1fd29ybGQod29ybGQpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
aAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VyU3R5bGVTaGVldC5oPgogI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAKQEAgLTM2
LDIxICszNiwyMSBAQCBjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmplCiBw
dWJsaWM6CiAgICAgc3RhdGljIFdURjo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
dXNlclN0eWxlU2hlZXQsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgc3RhdGlj
IFJlZjxVc2VyU3R5bGVTaGVldD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJT
dHlsZVNoZWV0LCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5bGVTaGVldChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSwg
d29ybGQpKTsKICAgICB9CiAKLSAgICBVc2VyU3R5bGVTaGVldChXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgVXNlclN0eWxlU2hlZXQoV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQsIEFQSTo6Q29udGVudFdvcmxkJik7CiAKICAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CiAKLSAgICBVc2VyQ29udGVudFdvcmxkJiB1c2VyQ29udGVudFdvcmxk
KCkgeyByZXR1cm4gbV93b3JsZDsgfQotICAgIGNvbnN0IFVzZXJDb250ZW50V29ybGQmIHVzZXJD
b250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgQ29udGVudFdvcmxk
JiBjb250ZW50V29ybGQoKSB7IHJldHVybiBtX3dvcmxkOyB9CisgICAgY29uc3QgQ29udGVudFdv
cmxkJiBjb250ZW50V29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CiAKIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgbV91c2VyU3R5bGVTaGVldDsKLSAgICBSZWY8
VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsKKyAgICBSZWY8Q29udGVudFdvcmxkPiBtX3dvcmxk
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQ29u
dGVudFJ1bGVMaXN0LmgiCi0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1
ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNs
dWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluamVjdFVzZXJTY3JpcHRJbW1l
ZGlhdGVseS5oIgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdLUGFnZUdyb3VwQWRkVXNlclN0eWxl
U2hlZXQoV0tQYWdlCiAgICAgYXV0byB3aGl0ZWxpc3QgPSB0b0ltcGwod2hpdGVsaXN0ZWRVUkxQ
YXR0ZXJucyk7CiAgICAgYXV0byBibGFja2xpc3QgPSB0b0ltcGwoYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJucyk7CiAKLSAgICBSZWY8QVBJOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQgPSBB
UEk6OlVzZXJTdHlsZVNoZWV0OjpjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3Vy
Y2UsIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6ICBVUkwoVVJM
KCksIGJhc2VVUkxTdHJpbmcpKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3Rv
cigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1Zl
Y3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKSwgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVsIH0sIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgUmVmPEFQSTo6VXNlclN0eWxlU2hlZXQ+
IHVzZXJTdHlsZVNoZWV0ID0gQVBJOjpVc2VyU3R5bGVTaGVldDo6Y3JlYXRlKFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgc291cmNlLCAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJs
YW5rVVJMKCkgOiAgVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKSksIHdoaXRlbGlzdCA/IHdoaXRl
bGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJs
YWNrbGlzdC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHRv
SW1wbChwYWdlR3JvdXBSZWYpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldC5nZXQoKSk7CiB9CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgV0tQ
YWdlR3JvdXBBZGRVc2VyU2NyaXB0KFdLUGFnZUdyb3UKICAgICBhdXRvIGJsYWNrbGlzdCA9IHRv
SW1wbChibGFja2xpc3RlZFVSTFBhdHRlcm5zKTsKICAgICAKICAgICBhdXRvIHVybCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpibGFua1VSTCgpIDogIFVSTChVUkwoKSwgYmFzZVVS
TFN0cmluZyk7Ci0gICAgUmVmPEFQSTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdCA9IEFQSTo6VXNl
clNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEZNb3ZlKHNvdXJjZSksIFdU
Rk1vdmUodXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDogVmVj
dG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0LT50b1N0cmluZ1ZlY3RvcigpIDog
VmVjdG9yPFN0cmluZz4oKSwgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1l
KSwgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKSB9LCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIFJlZjxBUEk6OlVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQgPSBBUEk6OlVzZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0
IHsgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHVybCksIHdoaXRlbGlzdCA/IHdoaXRlbGlzdC0+
dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIGJsYWNrbGlzdCA/IGJsYWNrbGlz
dC0+dG9TdHJpbmdWZWN0b3IoKSA6IFZlY3RvcjxTdHJpbmc+KCksIHRvVXNlclNjcmlwdEluamVj
dGlvblRpbWUoaW5qZWN0aW9uVGltZSksIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyhpbmpl
Y3RlZEZyYW1lcykgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAg
ICAgdG9JbXBsKHBhZ2VHcm91cFJlZiktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHQodXNlclNjcmlwdC5nZXQoKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLVXNlclNjcmlwdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tVc2Vy
U2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tVc2VyU2NyaXB0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCBXS1R5cGVJRCBXS1VzZXJTY3JpcHRHZXRUeXBlSUQoKQogCiBXS1VzZXJTY3JpcHRSZWYg
V0tVc2VyU2NyaXB0Q3JlYXRlV2l0aFNvdXJjZShXS1N0cmluZ1JlZiBzb3VyY2VSZWYsIF9XS1Vz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGJvb2wgZm9yTWFpbkZyYW1lT25s
eSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlclNjcmlwdDo6Y3JlYXRlKFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyB0b1dURlN0cmluZyhzb3VyY2VSZWYpLCBBUEk6OlVzZXJTY3JpcHQ6Omdl
bmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCB0b1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGlu
amVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFt
ZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVz
ZXJTY3JpcHQ6OmNyZWF0ZShXZWJDb3JlOjpVc2VyU2NyaXB0IHsgdG9XVEZTdHJpbmcoc291cmNl
UmVmKSwgQVBJOjpVc2VyU2NyaXB0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgdG9V
c2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9yTWFpbkZyYW1lT25seSA/
IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgfSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVc2VyU2NyaXB0Q29weVNvdXJjZShXS1VzZXJTY3JpcHRSZWYg
dXNlclNjcmlwdFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRXb3JsZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzQsNyArNzQsNyBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIC0gKF9XS1VzZXJDb250ZW50V29ybGQgKilfdXNl
ckNvbnRlbnRXb3JsZAogewotICAgIHJldHVybiBbW3dyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpmcm9tQ29udGVudFdvcmxkKCpfY29udGVudFdvcmxkKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENv
bnRlbnRXb3JsZDpzZWxmXSBhdXRvcmVsZWFzZV07CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oIgog
CisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgotI2ltcG9ydCAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2ltcG9ydCAiSW5q
ZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdElu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldL
U2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE0NiwxNCArMTQ3LDE0IEBAIHByaXZhdGU6CiAK
IC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNv
bnRlbnRXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0
byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJl
YWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KIAogLSAodm9pZClyZW1vdmVTY3JpcHRNZXNzYWdlSGFu
ZGxlckZvck5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIF91c2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShuYW1lLCBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCkBAIC0xNzUsNyArMTc2LDcgQEAgLSAodm9pZClfcmVtb3Zl
VXNlclNjcmlwdDooV0tVc2VyU2NyaXB0IAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTY3JpcHRzQXNzb2NpYXRlZFdpdGhVc2VyQ29u
dGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewotICAg
IF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlQWxsVXNlclNjcmlwdHMoKnVzZXJD
b250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHktPnJlbW92ZUFsbFVzZXJTY3JpcHRzKCp1c2VyQ29udGVudFdvcmxkLT5fY29udGVu
dFdvcmxkLT5fY29udGVudFdvcmxkKTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCkBAIC0yMjgsMjQgKzIyOSwyNCBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHMKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtICh2b2lkKV9yZW1v
dmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1Vz
ZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKnVzZXJDb250ZW50V29ybGQt
Pl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJl
bW92ZUFsbFVzZXJTdHlsZVNoZWV0cygqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+
X2NvbnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNT
dHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0
ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRX
b3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVz
ZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29ybGQpOwogICAgIGlmICgh
X3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5k
bGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQog
CiAtICh2b2lkKV9yZW1vdmVTY3JpcHRNZXNzYWdlSGFuZGxlckZvck5hbWU6KE5TU3RyaW5nICop
bmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRX
b3JsZAogewotICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3Nh
Z2VIYW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29y
bGQpOworICAgIF91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiB9CiAKIC0gKHZvaWQpX3JlbW92ZUFsbFNjcmlwdE1lc3NhZ2VIYW5kbGVy
c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92
ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdv
cmxkKTsKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJNZXNz
YWdlSGFuZGxlcnMoKnVzZXJDb250ZW50V29ybGQtPl9jb250ZW50V29ybGQtPl9jb250ZW50V29y
bGQpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
clNjcmlwdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6
U3RyaW5nKHNvdXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgeyB9
LCB7IH0sIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIHsgfSwgeyB9LCBBUEk6OnRvV2Vi
Q29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVP
bmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFs
bEZyYW1lcyB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQ
STo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNjcmlwdCB7IFdURjo6U3RyaW5nKHNv
dXJjZSksIEFQSTo6VXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgQVBJOjp0b1N0cmlu
Z1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJsYWNr
bGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9uVGlt
ZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRl
bnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJT
Y3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBB
UEk6OlVzZXJTY3JpcHQ6OmdlbmVyYXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3Io
bGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBB
UEk6OnRvV2ViQ29yZVVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJ
bmplY3RJbkFsbEZyYW1lcyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2Nv
bnRlbnRXb3JsZCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTk0LDE1ICs5NCw0MCBAQCAt
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclNjcmlwdD4oc2VsZiwgV2ViQ29yZTo6VXNlclNj
cmlwdCB7IFdURjo6U3RyaW5nKHNvdXJjZSksIFVSTChhc3NvY2lhdGVkVVJMKSwgQVBJOjp0b1N0
cmluZ1ZlY3RvcihsZWdhY3lXaGl0ZWxpc3QpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeUJs
YWNrbGlzdCksIEFQSTo6dG9XZWJDb3JlVXNlclNjcmlwdEluamVjdGlvblRpbWUoaW5qZWN0aW9u
VGltZSksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6
IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIH0sICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVz
ZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2Up
LCBVUkwoYXNzb2NpYXRlZFVSTCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0
KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8g
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1l
cyB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29u
dGVudFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPnVzZXJDb250ZW50
V29ybGQoKSk7CisgICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0
V2l0aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1
dG9yZWxlYXNlXTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25U
aW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1l
T25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheSAqKWxl
Z2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXkgKilsZWdhY3lCbGFja2xpc3Qg
Y29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTY3JpcHQ+KHNlbGYsIFdlYkNvcmU6
OlVzZXJTY3JpcHQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTY3JpcHQ6OmdlbmVy
YXRlVW5pcXVlVVJMKCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJ
Ojp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFja2xpc3QpLCBBUEk6OnRvV2ViQ29yZVVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lKGluamVjdGlvblRpbWUpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29y
ZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyB9LCAq
Y29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKKworICAgIHJldHVybiBzZWxmOworfQorCist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rp
b25UaW1lOihXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZy
YW1lT25seTooQk9PTClmb3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheSAq
KWxlZ2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXkgKilsZWdhY3lCbGFja2xp
c3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVkVVJMIGNvbnRlbnRXb3JsZDooV0tD
b250ZW50V29ybGQgKiljb250ZW50V29ybGQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJ
bldyYXBwZXI8QVBJOjpVc2VyU2NyaXB0PihzZWxmLCBXZWJDb3JlOjpVc2VyU2NyaXB0IHsgV1RG
OjpTdHJpbmcoc291cmNlKSwgVVJMKGFzc29jaWF0ZWRVUkwpLCBBUEk6OnRvU3RyaW5nVmVjdG9y
KGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwg
QVBJOjp0b1dlYkNvcmVVc2VyU2NyaXB0SW5qZWN0aW9uVGltZShpbmplY3Rpb25UaW1lKSwgZm9y
TWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6
SW5qZWN0SW5BbGxGcmFtZXMgfSwgKmNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7CisKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAoV0tDb250ZW50V29ybGQgKilfY29udGVudFdvcmxkCit7
CisgICAgcmV0dXJuIHdyYXBwZXIoX3VzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpKTsKK30KKwog
QGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlw
dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0UHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFz
cyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOwogCiBAaW50ZXJm
YWNlIFdLVXNlclNjcmlwdCAoV0tQcml2YXRlKQpAQCAtMzQsNyArMzUsMTEgQEAgTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5n
ICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlvblRpbWUpaW5qZWN0
aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkgbGVnYWN5V2hp
dGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0IGxlZ2FjeUJsYWNr
bGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCB1c2VyQ29udGVudFdv
cmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhT
b3VyY2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVj
dGlvblRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFt
ZU9ubHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVs
aXN0IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlz
dCBhc3NvY2lhdGVkVVJMOihOU1VSTCAqKWFzc29jaWF0ZWRVUkwgdXNlckNvbnRlbnRXb3JsZDoo
X1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhTb3Vy
Y2U6KE5TU3RyaW5nICopc291cmNlIGluamVjdGlvblRpbWU6KFdLVXNlclNjcmlwdEluamVjdGlv
blRpbWUpaW5qZWN0aW9uVGltZSBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9u
bHkgbGVnYWN5V2hpdGVsaXN0OihOU0FycmF5PE5TU3RyaW5nICo+ICopbGVnYWN5V2hpdGVsaXN0
IGxlZ2FjeUJsYWNrbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxlZ2FjeUJsYWNrbGlzdCBj
b250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lKWluamVjdGlvblRpbWUgZm9yTWFpbkZyYW1lT25seTooQk9PTClm
b3JNYWluRnJhbWVPbmx5IGxlZ2FjeVdoaXRlbGlzdDooTlNBcnJheTxOU1N0cmluZyAqPiAqKWxl
Z2FjeVdoaXRlbGlzdCBsZWdhY3lCbGFja2xpc3Q6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilsZWdh
Y3lCbGFja2xpc3QgYXNzb2NpYXRlZFVSTDooTlNVUkwgKilhc3NvY2lhdGVkVVJMIGNvbnRlbnRX
b3JsZDooV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBfV0tVc2VyQ29udGVudFdvcmxkICpfdXNlckNvbnRlbnRXb3JsZCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgV0tDb250ZW50V29ybGQgKl9jb250ZW50V29ybGQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQGVuZAogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNv
bnRlbnRXb3JsZC5tbQkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2
LDM4ICsyNiw1OCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVu
dFdvcmxkSW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgor
CiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogQGltcGxlbWVudGF0aW9u
IF9XS1VzZXJDb250ZW50V29ybGQKIAotKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxkV2l0
aE5hbWU6KE5TU3RyaW5nICopbmFtZQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE5hbWU6KE5T
U3RyaW5nICopbmFtZQogewotICAgIHJldHVybiB3cmFwcGVyKEFQSTo6VXNlckNvbnRlbnRXb3Js
ZDo6d29ybGRXaXRoTmFtZShuYW1lKSk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfY29udGVudFdvcmxkID0gW1dLQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6bmFtZV07CisgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKF9XS1Vz
ZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAorLSAoaW5zdGFuY2V0eXBlKV9pbml0CiB7Ci0g
ICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIF9jb250ZW50V29ybGQgPSBbV0tDb250ZW50V29ybGQgcGFnZVdvcmxkXTsKKyAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRo
Q29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgX3VzZXJDb250ZW50
V29ybGQtPn5Vc2VyQ29udGVudFdvcmxkKCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisgICAgX2Nv
bnRlbnRXb3JsZCA9IHdvcmxkOworICAgIHJldHVybiBzZWxmOworfQorCisrIChfV0tVc2VyQ29u
dGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJu
IFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0gYXV0b3Jl
bGVhc2VdOworfQorCisrIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQKK3sKKyAg
ICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgaWYgKF91c2VyQ29udGVudFdvcmxk
LmdldCgpID09ICZBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF91c2VyQ29udGVudFdvcmxkLT5uYW1lKCk7CisgICAg
cmV0dXJuIFtfY29udGVudFdvcmxkIG5hbWVdOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsK
LSAgICByZXR1cm4gKl91c2VyQ29udGVudFdvcmxkOworICAgIHJldHVybiBbX2NvbnRlbnRXb3Js
ZCBfYXBpT2JqZWN0XTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkSW50ZXJu
YWwuaAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwy
MCArMjUsNyBAQAogCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudFdvcmxkLmgiCiAKLSNpbXBvcnQg
IkFQSVVzZXJDb250ZW50V29ybGQuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCi0jaW1wb3J0IDx3
dGYvVmVjdG9yLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpVc2VyQ29u
dGVudFdvcmxkPiB7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tVc2VyQ29udGVudFdvcmxkOwotICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfTsKLQotfQorQGNsYXNzIFdLQ29udGVudFdvcmxk
OwogCiBuYW1lc3BhY2UgQVBJIHsKIApAQCAtNjIsNiArNDksNyBAQCBpbmxpbmUgVmVjdG9yPFdU
Rjo6U3RyaW5nPiB0b1N0cmluZ1ZlY3RvCiAKIEBpbnRlcmZhY2UgX1dLVXNlckNvbnRlbnRXb3Js
ZCAoKSA8V0tPYmplY3Q+IHsKIEBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6
VXNlckNvbnRlbnRXb3JsZD4gX3VzZXJDb250ZW50V29ybGQ7CisgICAgUmV0YWluUHRyPFdLQ29u
dGVudFdvcmxkPiBfY29udGVudFdvcmxkOwogfQorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENv
bnRlbnRXb3JsZDooV0tDb250ZW50V29ybGQgKil3b3JsZDsKIEBlbmQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW0JKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IElu
IHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUg
dGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxk
IHRoaXMgcmVhbGx5IGJlPwogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAg
IEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2Vs
ZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVz
ZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1l
T25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5B
bGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCBBUEk6OlVzZXJDb250ZW50
V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBw
ZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBX
VEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVS
TCgpLCB7IH0sIHsgfSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJh
bWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVz
ZXJMZXZlbCB9LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtNTYsNyArNTYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhTb3VyY2U6KE5TU3RyaW5nCiAgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2Fu
IHVzZSBnZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0
cnVjdG9yIGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPwogICAg
IFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1
Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxl
U2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0
ZVVuaXF1ZVVSTCgpLCBBUEk6OnRvU3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6
dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNv
cmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdl
YkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250
ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhz
b3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCBBUEk6OnRv
U3RyaW5nVmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5
QmxhY2tsaXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVP
bmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9LCAqdXNlckNvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZC0+X2NvbnRlbnRXb3JsZCk7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU291cmNlOihOU1N0cmluZwogICAgIC8vIEZJWE1FOiBJbiB0aGUgQVBJIHRlc3Qs
IHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVmb3JlIHRoZSBBUEk6Ok9iamVj
dCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNob3VsZCB0aGlzIHJlYWxseSBi
ZT8KICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6
Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVz
ZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgeyAgVVJMKCksIFdURjo6U3RyaW5n
KFtiYXNlVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddKSB9LCBBUEk6OnRvU3RyaW5n
VmVjdG9yKGxlZ2FjeVdoaXRlbGlzdCksIEFQSTo6dG9TdHJpbmdWZWN0b3IobGVnYWN5QmxhY2ts
aXN0KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5IDog
V2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJMZXZlbCB9
LCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhzb3VyY2UpLCB7ICBVUkwoKSwgV1RGOjpTdHJp
bmcoW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10pIH0sIEFQSTo6dG9TdHJp
bmdWZWN0b3IobGVnYWN5V2hpdGVsaXN0KSwgQVBJOjp0b1N0cmluZ1ZlY3RvcihsZWdhY3lCbGFj
a2xpc3QpLCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkg
OiBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlVXNlckxldmVs
IH0sICp1c2VyQ29udGVudFdvcmxkLT5fY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNwcAkocmV2aXNpb24gMjU3MzY5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgKi8KIAogCi1BUEk6OlVzZXJDb250ZW50V29ybGQmIHdlYmtpdFVzZXJDb250ZW50V29y
bGQoY29uc3QgY2hhciogd29ybGROYW1lKQorQVBJOjpDb250ZW50V29ybGQmIHdlYmtpdENvbnRl
bnRXb3JsZChjb25zdCBjaGFyKiB3b3JsZE5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hNYXA8Q1N0cmluZywgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+PiBtYXA7
Ci0gICAgcmV0dXJuICptYXAuZ2V0KCkuZW5zdXJlKHdvcmxkTmFtZSwgW3dvcmxkTmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgod29ybGROYW1lKV0geyByZXR1cm4gQVBJOjpVc2VyQ29udGVudFdvcmxk
Ojp3b3JsZFdpdGhOYW1lKHdvcmxkTmFtZSk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxDU3RyaW5nLCBSZWZQdHI8QVBJOjpDb250ZW50V29y
bGQ+Pj4gbWFwOworICAgIHJldHVybiAqbWFwLmdldCgpLmVuc3VyZSh3b3JsZE5hbWUsIFt3b3Js
ZE5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSldIHsKKyAgICAgICAgcmV0dXJuIEFQ
STo6Q29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKHdvcmxkTmFtZSk7CisgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCiBzdGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgdG9Vc2VyQ29udGVudEluamVjdGVkRnJhbWVzKFdlYktpdFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCkBAIC05NSw3ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
VmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWMKIH0KIAogc3RydWN0IF9XZWJLaXRVc2VyU3R5bGVT
aGVldCB7Ci0gICAgX1dlYktpdFVzZXJTdHlsZVNoZWV0KGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdl
YktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJT
dHlsZUxldmVsIGxldmVsLCBjb25zdCBjaGFyKiBjb25zdCogd2hpdGVsaXN0LCBjb25zdCBjaGFy
KiBjb25zdCogYmxhY2tsaXN0LCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQorICAgIF9X
ZWJLaXRVc2VyU3R5bGVTaGVldChjb25zdCBnY2hhciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5bGVMZXZlbCBsZXZl
bCwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgY2hhciogY29uc3QqIGJsYWNr
bGlzdCwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogICAgICAgICA6IHVzZXJTdHlsZVNoZWV0
KGFkb3B0UmVmKG5ldyBBUEk6OlVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0IHsKICAgICAg
ICAgICAgIFN0cmluZzo6ZnJvbVVURjgoc291cmNlKSwgVVJMIHsgfSwKICAgICAgICAgICAgIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksCkBAIC0x
NzEsNyArMTczLDcgQEAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxlXwog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgV2ViS2l0
VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNlclN0
eWxlU2hlZXQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRVc2VyU3R5bGVTaGVldCkpKTsKLSAg
ICBuZXcgKHVzZXJTdHlsZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVldChzb3VyY2UsIGluamVj
dGVkRnJhbWVzLCBsZXZlbCwgd2hpdGVsaXN0LCBibGFja2xpc3QsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2ViS2l0VXNl
clN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlzdCwgYmxh
Y2tsaXN0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICByZXR1
cm4gdXNlclN0eWxlU2hlZXQ7CiB9CiAKQEAgLTE5Nyw3ICsxOTksNyBAQCBXZWJLaXRVc2VyU3R5
bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29y
bGROYW1lLCBudWxscHRyKTsKIAogICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0KiB1c2VyU3R5bGVT
aGVldCA9IHN0YXRpY19jYXN0PFdlYktpdFVzZXJTdHlsZVNoZWV0Kj4oZmFzdE1hbGxvYyhzaXpl
b2YoV2ViS2l0VXNlclN0eWxlU2hlZXQpKSk7Ci0gICAgbmV3ICh1c2VyU3R5bGVTaGVldCkgV2Vi
S2l0VXNlclN0eWxlU2hlZXQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwsIHdoaXRlbGlz
dCwgYmxhY2tsaXN0LCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgIG5l
dyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0ZWRG
cmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgd2Via2l0Q29udGVudFdvcmxkKHdv
cmxkTmFtZSkpOwogICAgIHJldHVybiB1c2VyU3R5bGVTaGVldDsKIH0KIApAQCAtMjA3LDcgKzIw
OSw3IEBAIEFQSTo6VXNlclN0eWxlU2hlZXQmIHdlYmtpdFVzZXJTdHlsZVNoZWUKIH0KIAogc3Ry
dWN0IF9XZWJLaXRVc2VyU2NyaXB0IHsKLSAgICBfV2ViS2l0VXNlclNjcmlwdChjb25zdCBnY2hh
ciogc291cmNlLCBXZWJLaXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVz
LCBXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBjb25zdCBnY2hh
ciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgZ2NoYXIqIGNvbnN0KiBibGFja2xpc3QsIEFQSTo6
VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCisgICAgX1dlYktpdFVzZXJTY3JpcHQoY29uc3QgZ2No
YXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cywgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgY29uc3QgZ2No
YXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxhY2tsaXN0LCBBUEk6
OkNvbnRlbnRXb3JsZCYgd29ybGQpCiAgICAgICAgIDogdXNlclNjcmlwdChhZG9wdFJlZihuZXcg
QVBJOjpVc2VyU2NyaXB0KFVzZXJTY3JpcHQgewogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRG
OChzb3VyY2UpLCBVUkwgeyB9LAogICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwKQEAgLTI4Myw3ICsyODUsNyBAQCBXZWJLaXRV
c2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc291cmNlLCBudWxscHRyKTsKICAgICBXZWJLaXRVc2VyU2NyaXB0KiB1c2VyU2NyaXB0
ID0gc3RhdGljX2Nhc3Q8V2ViS2l0VXNlclNjcmlwdCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktp
dFVzZXJTY3JpcHQpKSk7Ci0gICAgbmV3ICh1c2VyU2NyaXB0KSBXZWJLaXRVc2VyU2NyaXB0KHNv
dXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVjdGlvblRpbWUsIHdoaXRlbGlzdCwgYmxhY2tsaXN0
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIG5ldyAodXNlclNj
cmlwdCkgV2ViS2l0VXNlclNjcmlwdChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBpbmplY3Rpb25U
aW1lLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50
V29ybGQoKSk7CiAgICAgcmV0dXJuIHVzZXJTY3JpcHQ7CiB9CiAKQEAgLTMwOSw3ICszMTEsNyBA
QCBXZWJLaXRVc2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwod29ybGROYW1lLCBudWxscHRyKTsKIAogICAgIFdlYktpdFVzZXJTY3JpcHQq
IHVzZXJTY3JpcHQgPSBzdGF0aWNfY2FzdDxXZWJLaXRVc2VyU2NyaXB0Kj4oZmFzdE1hbGxvYyhz
aXplb2YoV2ViS2l0VXNlclNjcmlwdCkpKTsKLSAgICBuZXcgKHVzZXJTY3JpcHQpIFdlYktpdFVz
ZXJTY3JpcHQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgaW5qZWN0aW9uVGltZSwgd2hpdGVsaXN0
LCBibGFja2xpc3QsIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgbmV3
ICh1c2VyU2NyaXB0KSBXZWJLaXRVc2VyU2NyaXB0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGlu
amVjdGlvblRpbWUsIHdoaXRlbGlzdCwgYmxhY2tsaXN0LCB3ZWJraXRDb250ZW50V29ybGQod29y
bGROYW1lKSk7CiAgICAgcmV0dXJuIHVzZXJTY3JpcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM5LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9y
ZWcKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdl
ciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6
bm9ybWFsV29ybGQoKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5n
Ojpmcm9tVVRGOChuYW1lKSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7
CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBAIC0yNjMsNyArMjYz
LDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfdW5yZWdpcwogewogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKG1hbmFnZXIpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKG5hbWUpOwotICAgIG1hbmFnZXItPnByaXYtPnVzZXJDb250
ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShTdHJpbmc6OmZy
b21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAg
IG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OkNvbnRlbnRXb3JsZDo6
cGFnZUNvbnRlbnRXb3JsZCgpKTsKIH0KIAogLyoqCkBAIC0yODksNyArMjg5LDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZwogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHdvcmxkTmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZy
b21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgICAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2Fn
ZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtp
dENvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSk7CiB9CiAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl91bnJlZ2lzCiAgICAgZ19yZXR1cm5faWZfZmFpbChuYW1lKTsKICAgICBnX3JldHVy
bl9pZl9mYWlsKHdvcmxkTmFtZSk7CiAKLSAgICBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENv
bnRyb2xsZXItPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoU3RyaW5nOjpmcm9tVVRG
OChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICBtYW5hZ2Vy
LT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZv
ck5hbWUoU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0Q29udGVudFdvcmxkKHdvcmxkTmFt
ZSkpOwogfQogCiAvKioKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCShyZXZpc2lvbiAyNTcz
NjkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogI2RlZmluZSBXZWJL
aXRVc2VyQ29udGVudFByaXZhdGVfaAogCiAjaW5jbHVkZSAiQVBJQ29udGVudFJ1bGVMaXN0Lmgi
Ci0jaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgorI2luY2x1ZGUgIkFQSUNvbnRlbnRX
b3JsZC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50LmgiCkBAIC0zMCw3ICszMCw3
IEBACiAKIEFQSTo6VXNlclNjcmlwdCYgd2Via2l0VXNlclNjcmlwdEdldFVzZXJTY3JpcHQoV2Vi
S2l0VXNlclNjcmlwdCopOwogQVBJOjpVc2VyU3R5bGVTaGVldCYgd2Via2l0VXNlclN0eWxlU2hl
ZXRHZXRVc2VyU3R5bGVTaGVldChXZWJLaXRVc2VyU3R5bGVTaGVldCopOwotQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3ZWJraXRVc2VyQ29udGVudFdvcmxkKGNvbnN0IGNoYXIqKTsKK0FQSTo6Q29u
dGVudFdvcmxkJiB3ZWJraXRDb250ZW50V29ybGQoY29uc3QgY2hhciopOwogQVBJOjpDb250ZW50
UnVsZUxpc3QmIHdlYmtpdFVzZXJDb250ZW50RmlsdGVyR2V0Q29udGVudFJ1bGVMaXN0KFdlYktp
dFVzZXJDb250ZW50RmlsdGVyKik7CiBXZWJLaXRVc2VyQ29udGVudEZpbHRlciogd2Via2l0VXNl
ckNvbnRlbnRGaWx0ZXJDcmVhdGUoUmVmUHRyPEFQSTo6Q29udGVudFJ1bGVMaXN0PiYmKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAkocmV2
aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkFQ
SVVzZXJDb250ZW50V29ybGQuaCIKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNs
dWRlICJXZWJLaXRFcnJvci5oIgogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbi5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlclByaXZhdGUuaCIKQEAg
LTczLDcgKzczLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+UmVtb3RlSQog
ICAgICAgICBnX29iamVjdF93ZWFrX3VucmVmKEdfT0JKRUNUKHdlYlZpZXcpLCByZWludGVycHJl
dF9jYXN0PEdXZWFrTm90aWZ5Pih3ZWJWaWV3RGVzdHJveWVkKSwgdGhpcyk7CiAKICAgICBmb3Ig
KGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA6IG1fdXNlckNvbnRlbnRNYW5hZ2VycykgewotICAg
ICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eSh1c2VyQ29udGVudE1hbmFnZXIpLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJp
bnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAg
ICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1
c2VyQ29udGVudE1hbmFnZXIpLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJpbnNw
ZWN0b3IiLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKICAgICAgICAg
Z19vYmplY3Rfd2Vha191bnJlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVy
cHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlz
KTsKICAgICB9CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OmhhbgogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1c2Vy
Q29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJDb250
ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0VudHJ5
KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVh
dGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBB
UEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvIGhhbmRs
ZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVz
c2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VD
b250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAkocmV2aXNp
b24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5
ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAorI2luY2x1ZGUgIkFQ
SUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSU5hdmlnYXRpb24uaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCIKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhCiAgICAgbV9pbnNwZWN0b3JDbGllbnQg
PSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwog
CiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6
bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3Bl
Y3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQ
cm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50
IHRvIGdldCBub3RpZmllZCBvZiBwYWdlIGxvYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTYgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXIuaCIKIAotI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKyNp
bmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVJlZjxX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShz
dGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpV
c2VyQ29udGVudFdvcmxkJiB3b3JsZCkKK1JlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdURk1vdmUoY2xp
ZW50KSwgbmFtZSwgd29ybGQpKTsKIH0KIAotV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OldlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IGNsaWVudCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQorV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGll
bnQ+IGNsaWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQp
CiAgICAgOiBtX2NsaWVudChXVEZNb3ZlKGNsaWVudCkpCiAgICAgLCBtX25hbWUobmFtZSkKICAg
ICAsIG1fd29ybGQod29ybGQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgJKHJldmlz
aW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisjaW5jbHVk
ZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIH0K
IAogbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBVc2VyQ29udGVudFdvcmxkOworY2xhc3MgQ29udGVu
dFdvcmxkOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDIxICs1NSwyMSBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpID0gMDsKICAg
ICB9OwogCi0gICAgc3RhdGljIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gY3JlYXRlKHN0
ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYpOworICAgIHN0YXRpYyBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGNyZWF0
ZShzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNvbnRl
bnRXb3JsZCYpOwogICAgIHZpcnR1YWwgfldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKCk7CiAKICAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCi0gICAgQVBJOjpDb250
ZW50V29ybGRCYXNlJiB3b3JsZCgpIHsgcmV0dXJuIG1fd29ybGQuZ2V0KCk7IH0KKyAgICBBUEk6
OkNvbnRlbnRXb3JsZCYgd29ybGQoKSB7IHJldHVybiBtX3dvcmxkLmdldCgpOyB9CiAKICAgICBD
bGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2NsaWVudDsgfQogCiBwcml2YXRlOgot
ICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyKHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+LCBjb25z
dCBTdHJpbmcmLCBBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKKyAgICBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcihzdGQ6OnVuaXF1ZV9wdHI8Q2xpZW50PiwgY29uc3QgU3RyaW5nJiwgQVBJOjpDb250
ZW50V29ybGQmKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGllbnQ+IG1fY2xpZW50OwogICAg
IFN0cmluZyBtX25hbWU7Ci0gICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gbV93b3JsZDsK
KyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IG1fd29ybGQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAJKHJl
dmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElDb250ZW50V29y
bGQuaCIKLSNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNl
clNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgpAQCAtMTEwLDExICsxMDksMTEgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkUAogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlclNjcmlwdHMu
aXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8gdXNlclNjcmlwdCA6IG1fdXNlclNjcmlwdHMtPmVs
ZW1lbnRzT2ZUeXBlPEFQSTo6VXNlclNjcmlwdD4oKSkKLSAgICAgICAgcGFyYW1ldGVycy51c2Vy
U2NyaXB0cy5hcHBlbmQoeyB1c2VyU2NyaXB0LT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQtPnVz
ZXJDb250ZW50V29ybGQoKS5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQtPnVzZXJTY3JpcHQoKSB9
KTsKKyAgICAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0cy5hcHBlbmQoeyB1c2VyU2NyaXB0LT5p
ZGVudGlmaWVyKCksIHVzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIoKSwgdXNl
clNjcmlwdC0+dXNlclNjcmlwdCgpIH0pOwogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMudXNlclN0
eWxlU2hlZXRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChhdXRvIHVzZXJTdHlsZVNoZWV0IDogbV91
c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6VXNlclN0eWxlU2hlZXQ+KCkpCi0g
ICAgICAgIHBhcmFtZXRlcnMudXNlclN0eWxlU2hlZXRzLmFwcGVuZCh7IHVzZXJTdHlsZVNoZWV0
LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkuaWRlbnRp
ZmllcigpLCB1c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKSB9KTsKKyAgICAgICAgcGFy
YW1ldGVycy51c2VyU3R5bGVTaGVldHMuYXBwZW5kKHsgdXNlclN0eWxlU2hlZXQtPmlkZW50aWZp
ZXIoKSwgdXNlclN0eWxlU2hlZXQtPmNvbnRlbnRXb3JsZCgpLmlkZW50aWZpZXIoKSwgdXNlclN0
eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkgfSk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy5t
ZXNzYWdlSGFuZGxlcnMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGF1dG8mIGhhbmRsZXIgOiBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVycy52YWx1ZXMoKSkKQEAgLTE0NiwyMSArMTQ1LDIxIEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8KICAgICB3ZWJQcm9jZXNzUHJveHku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6
Q29udGVudFdvcmxkQmFzZSYgd29ybGQpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGQmIHdvcmxkKQogewotICAg
IGlmICgmd29ybGQgPT0gJkFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSkKKyAg
ICBpZiAoJndvcmxkID09ICZBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY29udGVudFdvcmxkcy5h
ZGQoJndvcmxkKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMo
eyB3b3JsZC53b3JsZERhdGEoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHByb2Nl
c3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50V29y
bGRzKHsgd29ybGQud29ybGREYXRhKCkgfSksIGlkZW50aWZpZXIoKSk7CiAgICAgfQogfQogCi1i
b29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpzaG91bGRTZW5kUmVtb3ZlVXNlckNv
bnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQsIHVuc2lnbmVk
IG51bWJlck9mVXNlc1RvUmVtb3ZlKQorYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6c2hvdWxkU2VuZFJlbW92ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6Q29udGVudFdvcmxk
JiB3b3JsZCwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCiB7Ci0gICAgaWYgKCZ3b3Js
ZCA9PSAmQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKQorICAgIGlmICgmd29y
bGQgPT0gJkFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGF1dG8gaXQgPSBtX2NvbnRlbnRXb3JsZHMuZmluZCgmd29ybGQp
OwpAQCAtMTc0LDMxICsxNzMsMzEgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6c2hvdQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdv
cmxkJiB3b3JsZCwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCit2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50V29ybGRVc2VzKEFQSTo6Q29udGVu
dFdvcmxkJiB3b3JsZCwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpCiB7Ci0gICAgaWYg
KHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9m
VXNlc1RvUmVtb3ZlKSkgeworICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlQ29udGVudFdvcmxkc01l
c3NhZ2Uod29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewogICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdv
cmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHByb2Nlc3Mu
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50V29y
bGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogICAgIH0KIH0KIAot
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3Js
ZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4+JiB3b3Js
ZHMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50V29y
bGRVc2VzKEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+JiB3b3JsZHMp
CiB7CiAgICAgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkc1RvUmVtb3ZlOwog
ICAgIGZvciAoYXV0byYgd29ybGRVc2VQYWlyIDogd29ybGRzKSB7Ci0gICAgICAgIGlmIChzaG91
bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKCp3b3JsZFVzZVBhaXIua2V5Lmdl
dCgpLCB3b3JsZFVzZVBhaXIudmFsdWUpKQorICAgICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZUNv
bnRlbnRXb3JsZHNNZXNzYWdlKCp3b3JsZFVzZVBhaXIua2V5LmdldCgpLCB3b3JsZFVzZVBhaXIu
dmFsdWUpKQogICAgICAgICAgICAgd29ybGRzVG9SZW1vdmUuYXBwZW5kKHdvcmxkVXNlUGFpci5r
ZXktPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50
aWZpZXIoKSk7CisgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmll
cigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNj
cmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseSBpbW1lZGlhdGVseSkKIHsKLSAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3Js
ZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOworICAgIFJlZjxBUEk6OkNvbnRlbnRX
b3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LmNvbnRlbnRXb3JsZCgpOwogCi0gICAgYWRkVXNlckNv
bnRlbnRXb3JsZFVzZSh3b3JsZC5nZXQoKSk7CisgICAgYWRkQ29udGVudFdvcmxkVXNlKHdvcmxk
LmdldCgpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2Ny
aXB0KTsKIApAQCAtMjA4LDMzICsyMDcsMzMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6YWRkVQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCkKIHsKLSAgICBSZWY8QVBJ
OjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgp
OworICAgIFJlZjxBUEk6OkNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LmNvbnRlbnRX
b3JsZCgpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCiAgICAgICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVV
c2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwg
aWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxs
KCZ1c2VyU2NyaXB0KTsKIAotICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLmdl
dCgpLCAxKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLmdldCgpLCAxKTsKIH0K
IAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlw
dHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6Q29udGVudFdvcmxkJiB3b3Js
ZCkKIHsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJv
Y2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
dW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZU
eXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkg
ewotICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29y
bGQ7CisgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkgPT0gJndvcmxk
OwogICAgIH0pOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIHVzZXJT
Y3JpcHRzUmVtb3ZlZCk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgdXNlclNj
cmlwdHNSZW1vdmVkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogewotICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxBUEk6
OlVzZXJDb250ZW50V29ybGQ+PiB3b3JsZHM7CisgICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPEFQ
STo6Q29udGVudFdvcmxkPj4gd29ybGRzOwogICAgIGZvciAoYXV0byB1c2VyU2NyaXB0IDogbV91
c2VyU2NyaXB0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpVc2VyU2NyaXB0PigpKQotICAgICAgICB3
b3JsZHMuYWRkKGNvbnN0X2Nhc3Q8QVBJOjpVc2VyQ29udGVudFdvcmxkKj4oJnVzZXJTY3JpcHQt
PnVzZXJDb250ZW50V29ybGQoKSkpOworICAgICAgICB3b3JsZHMuYWRkKGNvbnN0X2Nhc3Q8QVBJ
OjpDb250ZW50V29ybGQqPigmdXNlclNjcmlwdC0+Y29udGVudFdvcmxkKCkpKTsKIAogICAgIFZl
Y3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXJzOwogICAgIHdvcmxk
SWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh3b3JsZHMuc2l6ZSgpKTsKQEAgLTI0
NiwxNCArMjQ1LDE0IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8K
IAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIAotICAgIHJlbW92ZVVz
ZXJDb250ZW50V29ybGRVc2VzKHdvcmxkcyk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyh3
b3JsZHMpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2Vy
U3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBS
ZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVzZXJDb250
ZW50V29ybGQoKTsKKyAgICBSZWY8QVBJOjpDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxl
U2hlZXQuY29udGVudFdvcmxkKCk7CiAKLSAgICBhZGRVc2VyQ29udGVudFdvcmxkVXNlKHdvcmxk
LmdldCgpKTsKKyAgICBhZGRDb250ZW50V29ybGRVc2Uod29ybGQuZ2V0KCkpOwogCiAgICAgbV91
c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAg
LTI2MywzMyArMjYyLDMzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFk
ZFUKIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxl
U2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgUmVmPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2VyQ29udGVudFdv
cmxkKCk7CisgICAgUmVmPEFQSTo6Q29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0
LmNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
CiAgICAgICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVl
dC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMt
PmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKLSAgICByZW1vdmVVc2Vy
Q29udGVudFdvcmxkVXNlcyh3b3JsZC5nZXQoKSwgMSk7CisgICAgcmVtb3ZlQ29udGVudFdvcmxk
VXNlcyh3b3JsZC5nZXQoKSwgMSk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdv
cmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzKEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTdHlsZVNo
ZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8
QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0KSB7Ci0g
ICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29y
bGQ7CisgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPmNvbnRlbnRXb3JsZCgpID09ICZ3
b3JsZDsKICAgICB9KTsKIAotICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCB1
c2VyU3R5bGVTaGVldHNSZW1vdmVkKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxk
LCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKIHsKLSAgICBIYXNoQ291bnRl
ZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4gd29ybGRzOworICAgIEhhc2hDb3Vu
dGVkU2V0PFJlZlB0cjxBUEk6OkNvbnRlbnRXb3JsZD4+IHdvcmxkczsKICAgICBmb3IgKGF1dG8g
dXNlclN0eWxlU2hlZXQgOiBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHNPZlR5cGU8QVBJOjpV
c2VyU3R5bGVTaGVldD4oKSkKLSAgICAgICAgd29ybGRzLmFkZChjb25zdF9jYXN0PEFQSTo6VXNl
ckNvbnRlbnRXb3JsZCo+KCZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpKSk7Cisg
ICAgICAgIHdvcmxkcy5hZGQoY29uc3RfY2FzdDxBUEk6OkNvbnRlbnRXb3JsZCo+KCZ1c2VyU3R5
bGVTaGVldC0+Y29udGVudFdvcmxkKCkpKTsKIAogICAgIFZlY3RvcjxDb250ZW50V29ybGRJZGVu
dGlmaWVyPiB3b3JsZElkZW50aWZpZXJzOwogICAgIHdvcmxkSWRlbnRpZmllcnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSh3b3JsZHMuc2l6ZSgpKTsKQEAgLTMwMSw3ICszMDAsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vCiAKICAgICBtX3VzZXJTdHlsZVNoZWV0
cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMo
d29ybGRzKTsKKyAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkcyk7CiB9CiAKIGJvb2wg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciYgaGFuZGxlcikKQEAgLTMxMyw3ICszMTIsNyBAQCBi
b29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYWRkVXNlckNvbnRlbnRXb3JsZFVzZSh3b3JsZCk7Cisg
ICAgYWRkQ29udGVudFdvcmxkVXNlKHdvcmxkKTsKIAogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRs
ZXJzLmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCkBAIC0zMjMsNyArMzIy
LDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiB3b3JsZCkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBBUEk6OkNv
bnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdl
SGFuZGxlcnMuYmVnaW4oKSwgZW5kID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAm
JiBpdC0+dmFsdWUtPndvcmxkKCkuaWRlbnRpZmllcigpID09IHdvcmxkLmlkZW50aWZpZXIoKSkg
ewpAQCAtMzMyLDEzICszMzEsMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtbwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQp
OwogCi0gICAgICAgICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgMSk7Cisg
ICAgICAgICAgICByZW1vdmVDb250ZW50V29ybGRVc2VzKHdvcmxkLCAxKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW50
V29ybGQmIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
QWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAg
Zm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3Muc2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwpAQCAt
MzUyLDcgKzM1MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW8K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogCi0gICAgcmVtb3ZlVXNlckNvbnRlbnRX
b3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOworICAgIHJlbW92ZUNvbnRlbnRXb3JsZFVz
ZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGFSZWZlcmVuY2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmgJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDggKzQxLDcgQEAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXJyYXk7CiBjbGFzcyBDb250
ZW50UnVsZUxpc3Q7Ci1jbGFzcyBDb250ZW50V29ybGRCYXNlOwotY2xhc3MgVXNlckNvbnRlbnRX
b3JsZDsKK2NsYXNzIENvbnRlbnRXb3JsZDsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVc2Vy
U3R5bGVTaGVldDsKIH0KQEAgLTgyLDIxICs4MSwyMSBAQCBwdWJsaWM6CiAgICAgQVBJOjpBcnJh
eSYgdXNlclNjcmlwdHMoKSB7IHJldHVybiBtX3VzZXJTY3JpcHRzLmdldCgpOyB9CiAgICAgdm9p
ZCBhZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlh
dGVseSk7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYpOwotICAg
IHZvaWQgcmVtb3ZlQWxsVXNlclNjcmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAg
dm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OkNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQg
cmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAogICAgIEFQSTo6QXJyYXkmIHVzZXJTdHlsZVNoZWV0
cygpIHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRzLmdldCgpOyB9CiAgICAgdm9pZCBhZGRVc2Vy
U3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0Jik7CiAgICAgdm9pZCByZW1vdmVVc2VyU3R5
bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0Jik7Ci0gICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHMoQVBJOjpDb250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cygpOwogCi0gICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudChBUEk6OlVzZXJD
b250ZW50V29ybGQmKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KEFQSTo6Q29udGVu
dFdvcmxkJik7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIHdhcyBhIG5hbWUgY29u
ZmxpY3QuCiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXImKTsKLSAgICB2b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUo
Y29uc3QgU3RyaW5nJiwgQVBJOjpVc2VyQ29udGVudFdvcmxkJik7Ci0gICAgdm9pZCByZW1vdmVB
bGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOworICAgIHZvaWQg
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmLCBBUEk6OkNvbnRl
bnRXb3JsZCYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OkNv
bnRlbnRXb3JsZCYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICB2b2lk
IGFkZE5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmKTsKQEAgLTExNywxNyArMTE2
LDE3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3QgbWVz
c2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKLSAgICB2b2lkIGFk
ZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpDb250ZW50V29ybGRCYXNlJik7Ci0gICAgdm9pZCBy
ZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQmLCB1bnNpZ25l
ZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7Ci0gICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxk
VXNlcyhIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpVc2VyQ29udGVudFdvcmxkPj4mKTsKLSAg
ICBib29sIHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2UoQVBJOjpVc2Vy
Q29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOworICAgIHZvaWQg
YWRkQ29udGVudFdvcmxkVXNlKEFQSTo6Q29udGVudFdvcmxkJik7CisgICAgdm9pZCByZW1vdmVD
b250ZW50V29ybGRVc2VzKEFQSTo6Q29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2Vz
VG9SZW1vdmUpOworICAgIHZvaWQgcmVtb3ZlQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNl
dDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGQ+PiYpOworICAgIGJvb2wgc2hvdWxkU2VuZFJlbW92
ZUNvbnRlbnRXb3JsZHNNZXNzYWdlKEFQSTo6Q29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVy
T2ZVc2VzVG9SZW1vdmUpOwogCiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3Nl
czsKICAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyU2NyaXB0czsKICAgICBSZWY8QVBJOjpBcnJh
eT4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnM7Ci0gICAgSGFzaENv
dW50ZWRTZXQ8UmVmUHRyPEFQSTo6Q29udGVudFdvcmxkQmFzZT4+IG1fY29udGVudFdvcmxkczsK
KyAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8QVBJOjpDb250ZW50V29ybGQ+PiBtX2NvbnRlbnRX
b3JsZHM7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFdlYWtIYXNoU2V0
PE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3NlczsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU3
MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTI2NSw3ICsxMjY1LDYgQEAKIAkJN0M4ODJERjcxQzdFOTk2NTAw
NkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyREYzMUM3RTk5NUUwMDZCRjczMSAvKiBfV0tVc2Vy
Q29udGVudFdvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0M4ODJERjkxQzdFOTk2RjAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4ODJERjUxQzdFOTk1RTAwNkJGNzMxIC8qIF9XS1VzZXJDb250ZW50V29ybGRJbnRlcm5hbC5o
ICovOyB9OwogCQk3Qzg4MkRGQTFDN0U5OTczMDA2QkY3MzEgLyogV0tVc2VyU2NyaXB0UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJE
RjYxQzdFOTk1RTAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3Qzg4MkRGRDFDN0U5OUE4MDA2
QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJERkMxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJD
b250ZW50V29ybGQuaCAqLzsgfTsKIAkJN0M4OUQyOTQxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVz
ZXJTY3JpcHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmggKi87IH07CiAJCTdD
ODlEMjk4MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdlQ29uZmlndXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyOTYxQTY3NTNCMjAw
M0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1cmF0aW9uLmggKi87IH07CiAJCTdDODlEMjlDMUE2Nzgz
N0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDI5QTFBNjc4MzdCMDAzQTVGREUgLyog
V0tQYWdlQ29uZmlndXJhdGlvblJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC00MTQ0LDggKzQxNDMsNiBAQAogCQk3Qzg4MkRGNDFDN0U5OTVF
MDA2QkY3MzEgLyogX1dLVXNlckNvbnRlbnRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS1VzZXJDb250ZW50V29ybGQubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDODgyREY1MUM3RTk5NUUwMDZCRjczMSAvKiBfV0tVc2VyQ29udGVu
dFdvcmxkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNl
ckNvbnRlbnRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
ODgyREY2MUM3RTk5NUUwMDZCRjczMSAvKiBXS1VzZXJTY3JpcHRQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlclNjcmlwdFByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M4ODJERkIxQzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJD
b250ZW50V29ybGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJ
VXNlckNvbnRlbnRXb3JsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDODgy
REZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50V29ybGQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3Jp
cHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlclNjcmlwdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg5RDI5NTFBNjc1M0IyMDAzQTVGREUgLyog
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Qzg5RDI5NjFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUGFnZUNvbmZpZ3VyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NDYsOCArODc0Myw2IEBACiAJCQkJMUE0
RDY2NDcxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggKi8sCiAJCQkJNTFEMTI0Mzgx
RTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZVRhc2suY3BwICovLAogCQkJCTUxRDEyNDM5
MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVUYXNrLmggKi8sCi0JCQkJN0M4ODJERkIx
QzdFOTlBNjAwNkJGNzMxIC8qIEFQSVVzZXJDb250ZW50V29ybGQuY3BwICovLAotCQkJCTdDODgy
REZDMUM3RTk5QTYwMDZCRjczMSAvKiBBUElVc2VyQ29udGVudFdvcmxkLmggKi8sCiAJCQkJN0NC
MzY1QUYxRDMxREQxRTAwNzE1OENBIC8qIEFQSVVzZXJJbml0aWF0ZWRBY3Rpb24uaCAqLywKIAkJ
CQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgKi8sCiAJCQkJ
N0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKQEAgLTEwMjAx
LDcgKzEwMTk2LDYgQEAKIAkJCQlCQ0UyMzE1RDEyMkMzMENBMDBENUMzNUEgLyogQVBJVVJMUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5MEExRDIxMjJERDU1RTAwQ0M4QzUwIC8qIEFQ
SVVSTFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjExM0UyNTEyNkNFMTgyMDA1N0Qw
QTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Qzg4
MkRGRDFDN0U5OUE4MDA2QkY3MzEgLyogQVBJVXNlckNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0NCMzY1QjExRDMxREQxRTAwNzE1OENBIC8qIEFQSVVzZXJJbml0aWF0ZWRBY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMjk0MUE2NzEyMkYwMDNBNUZERSAvKiBBUElV
c2VyU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDg3ODYyNDFCREI1OEZGMDBEMDJBQkIg
LyogQVBJVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI1NzM2OSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCog
V2ViVXNlckNvbnRlbgogICAgIHJldHVybiBpdGVyYXRvciA9PSB3b3JsZE1hcCgpLmVuZCgpID8g
bnVsbHB0ciA6IGl0ZXJhdG9yLT52YWx1ZS5maXJzdC5nZXQoKTsKIH0KIAotdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGQoY29uc3Qgc3RkOjpwYWlyPENv
bnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkKQordm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZENvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxk
SWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGQpCiB7CiAgICAgQVNTRVJUKHdvcmxkLmZpcnN0KTsK
ICAgICBpZiAod29ybGQuZmlyc3QgPT0gcGFnZUNvbnRlbnRXb3JsZElkZW50aWZpZXIoKSkKQEAg
LTExOSwxMyArMTE5LDEzIEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2Vy
Q28KICAgICB9KTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJD
b250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmll
ciwgU3RyaW5nPj4mIHdvcmxkcykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRD
b250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmll
ciwgU3RyaW5nPj4mIHdvcmxkcykKIHsKICAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29ybGRzKQot
ICAgICAgICBhZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkKTsKKyAgICAgICAgYWRkQ29udGVudFdv
cmxkKHdvcmxkKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVz
ZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYgd29y
bGRJZGVudGlmaWVycykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVDb250
ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYgd29ybGRJZGVu
dGlmaWVycykKIHsKICAgICBmb3IgKGF1dG8mIHdvcmxkSWRlbnRpZmllciA6IHdvcmxkSWRlbnRp
ZmllcnMpIHsKICAgICAgICAgQVNTRVJUKHdvcmxkSWRlbnRpZmllcik7CkBAIC0xMzMsNyArMTMz
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZQogCiAgICAgICAg
IGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVHJ5
aW5nIHRvIHJlbW92ZSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRv
ZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjCiAgICAgZm9yIChjb25zdCBh
dXRvJiB1c2VyU2NyaXB0RGF0YSA6IHVzZXJTY3JpcHRzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3
b3JsZE1hcCgpLmZpbmQodXNlclNjcmlwdERhdGEud29ybGRJZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
VHJ5aW5nIHRvIGFkZCBhIFVzZXJTY3JpcHQgdG8gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQ
Ukl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byBh
ZGQgYSBVc2VyU2NyaXB0IHRvIGEgQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhhdCBk
b2VzIG5vdCBleGlzdC4iLCB1c2VyU2NyaXB0RGF0YS53b3JsZElkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZQogewogICAgIGF1dG8g
aXQgPSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgPT0gd29y
bGRNYXAoKS5lbmQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUg
YSBVc2VyU2NyaXB0IGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhIFVzZXJTY3JpcHQgZnJvbSBhIENvbnRl
bnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbAogICAgIGZv
ciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29ybGRJZGVudGlmaWVycykgewogICAgICAgICBh
dXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChp
dCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWlu
ZyB0byByZW1vdmUgYWxsIFVzZXJTY3JpcHRzIGZyb20gYSBVc2VyQ29udGVudFdvcmxkIChpZD0l
IiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCB3b3JsZElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVz
ZXJTY3JpcHRzIGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMg
bm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFkZFVzZXJTdAogICAgIGZvciAoY29uc3QgYXV0byYgdXNlclN0eWxlU2hl
ZXREYXRhIDogdXNlclN0eWxlU2hlZXRzKSB7CiAgICAgICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgp
LmZpbmQodXNlclN0eWxlU2hlZXREYXRhLndvcmxkSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChp
dCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWlu
ZyB0byBhZGQgYSBVc2VyU3R5bGVTaGVldCB0byBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBS
SXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHVzZXJTdHlsZVNoZWV0RGF0YS53b3JsZElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0
byBhZGQgYSBVc2VyU3R5bGVTaGVldCB0byBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIp
IHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgdXNlclN0eWxlU2hlZXREYXRhLndvcmxkSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1v
dmVVc2UKIHsKICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxkSWRlbnRpZmllcik7
CiAgICAgaWYgKGl0ID09IHdvcmxkTWFwKCkuZW5kKCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCJUcnlpbmcgdG8gcmVtb3ZlIGEgVXNlclN0eWxlU2hlZXQgZnJvbSBhIFVzZXJDb250ZW50V29y
bGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEg
VXNlclN0eWxlU2hlZXQgZnJvbSBhIENvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQg
ZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbAogICAgIGZvciAoYXV0byYgd29ybGRJZGVudGlmaWVyIDogd29y
bGRJZGVudGlmaWVycykgewogICAgICAgICBhdXRvIGl0ID0gd29ybGRNYXAoKS5maW5kKHdvcmxk
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpdCA9PSB3b3JsZE1hcCgpLmVuZCgpKSB7Ci0gICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYWxsIFVzZXJTdHlsZVNoZWV0
cyBmcm9tIGEgVXNlckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3Qg
ZXhpc3QuIiwgd29ybGRJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU3R5bGVTaGVldHMgZnJvbSBhIENvbnRl
bnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgd29ybGRJZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTI3OCw3ICsyNzgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNj
CiAgICAgZm9yIChhdXRvJiBoYW5kbGVyIDogc2NyaXB0TWVzc2FnZUhhbmRsZXJzKSB7CiAgICAg
ICAgIGF1dG8gaXQgPSB3b3JsZE1hcCgpLmZpbmQoaGFuZGxlci53b3JsZElkZW50aWZpZXIpOwog
ICAgICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJUcnlpbmcgdG8gYWRkIGEgVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyIHRvIGEgVXNl
ckNvbnRlbnRXb3JsZCAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgaGFu
ZGxlci53b3JsZElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIlRyeWluZyB0byBhZGQgYSBVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgdG8gYSBDb250ZW50
V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIGhhbmRsZXIud29y
bGRJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpy
ZW1vdmVVc2UKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogICAgIGF1dG8gaXQg
PSB3b3JsZE1hcCgpLmZpbmQod29ybGRJZGVudGlmaWVyKTsKICAgICBpZiAoaXQgPT0gd29ybGRN
YXAoKS5lbmQoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIlRyeWluZyB0byByZW1vdmUgYSBV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBS
SXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGEgVXNlclNjcmlwdE1l
c3NhZ2VIYW5kbGVyIGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRv
ZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpyZW1vdmVBbGwKICAgICBmb3IgKGF1dG8mIHdvcmxkSWRlbnRpZmllciA6IHdvcmxk
SWRlbnRpZmllcnMpIHsKICAgICAgICAgYXV0byBpdCA9IHdvcmxkTWFwKCkuZmluZCh3b3JsZElk
ZW50aWZpZXIpOwogICAgICAgICBpZiAoaXQgPT0gd29ybGRNYXAoKS5lbmQoKSkgewotICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJUcnlpbmcgdG8gcmVtb3ZlIGFsbCBVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgZnJvbSBhIFVzZXJDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRv
ZXMgbm90IGV4aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiVHJ5aW5nIHRvIHJlbW92ZSBhbGwgVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyIGZyb20gYSBDb250ZW50V29ybGQgKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4
aXN0LiIsIHdvcmxkSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lv
biAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAgcHVi
bGljOgogCiAgICAgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGRGb3JJZGVudGlmaWVy
KENvbnRlbnRXb3JsZElkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxk
cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+
Jik7Ci0gICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50
V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+Jik7CisgICAgdm9pZCBhZGRDb250ZW50V29ybGRzKGNv
bnN0IFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4mKTsK
KyAgICB2b2lkIGFkZENvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRl
bnRpZmllciwgU3RyaW5nPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYlVz
ZXJTY3JpcHREYXRhPiYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAgIHZvaWQg
YWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU3R5bGVTaGVldERhdGE+Jik7
CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+Jik7CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVt
b3ZlVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPENvbnRlbnRXb3JsZElkZW50aWZpZXI+
Jik7CisgICAgdm9pZCByZW1vdmVDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29y
bGRJZGVudGlmaWVyPiYpOwogCiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0KENvbnRlbnRXb3Js
ZElkZW50aWZpZXIsIHVpbnQ2NF90IHVzZXJTY3JpcHRJZGVudGlmaWVyKTsKICAgICB2b2lkIHJl
bW92ZUFsbFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxDb250ZW50V29ybGRJZGVudGlmaWVyPiYp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNTczNjkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw4ICsyNCw4IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyIHsKLSAgICBBZGRVc2VyQ29udGVudFdvcmxkcyhWZWN0b3I8c3RkOjpwYWlyPFdlYktpdDo6
Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4gd29ybGRzKTsKLSAgICBSZW1vdmVVc2Vy
Q29udGVudFdvcmxkcyhWZWN0b3I8V2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3Js
ZElkZW50aWZpZXJzKTsKKyAgICBBZGRDb250ZW50V29ybGRzKFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
S2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+PiB3b3JsZHMpOworICAgIFJlbW92
ZUNvbnRlbnRXb3JsZHMoVmVjdG9yPFdlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29y
bGRJZGVudGlmaWVycyk7CiAKICAgICBBZGRVc2VyU2NyaXB0cyhWZWN0b3I8c3RydWN0IFdlYktp
dDo6V2ViVXNlclNjcmlwdERhdGE+IHVzZXJTY3JpcHRzLCBlbnVtOmJvb2wgV2ViS2l0OjpJbmpl
Y3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpOwogICAgIFJlbW92ZVVzZXJTY3Jp
cHQoV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyIHdvcmxkSWRlbnRpZmllciwgdWludDY0
X3QgaWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3MzY5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNyw3ICs3MDcsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgZm9yIChjb25z
dCBhdXRvJiBpdGVyYXRvciA6IHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpCiAgICAgICAg
IHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5KTsK
IAotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkcyhwYXJh
bWV0ZXJzLnVzZXJDb250ZW50V29ybGRzKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkQ29udGVudFdvcmxkcyhwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzKTsKICAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdHMoV1RGTW92ZShwYXJhbWV0ZXJzLnVz
ZXJTY3JpcHRzKSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CiAgICAgbV91c2Vy
Q29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0cyhwYXJhbWV0ZXJzLnVzZXJTdHls
ZVNoZWV0cyk7CiAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMocGFyYW1ldGVycy5tZXNzYWdlSGFuZGxlcnMpOwpAQCAtMzQzMiw3ICszNDMy
LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcgogCiB2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3Qgc3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkRGF0YSk7
CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRXb3JsZCh3b3JsZERhdGEp
OwogICAgIHJ1bkphdmFTY3JpcHQobWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyks
IHdvcmxkRGF0YS5maXJzdCwgY2FsbGJhY2tJRCk7CiB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NzUyNSkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTI2
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
X1dLVXNlckNvbnRlbnRXb3JsZCBzaG91bGQgYmUgYSB3cmFwcGVyIGFyb3VuZCBXS0NvbnRlbnRX
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
Mjc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTAy
LTI2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAg
IFRlc3RXZWJLaXRBUEkgYW5kIFdlYktpdFRlc3RSdW5uZXIgc2hvdWxkIGhhdmUgYnVuZGxlIGlk
ZW50aWZpZXJzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJDb250ZW50V29ybGQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Vc2VyQ29udGVudFdvcmxkLm1tCShyZXZpc2lvbiAyNTczNjkpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJDb250ZW50V29ybGQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCwxNSBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1Vz
ZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLVRFU1QoVXNlckNv
bnRlbnRXb3JsZCwgTm9ybWFsV29ybGQpCitURVNUKENvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGQp
CiB7CiAgICAgUmV0YWluUHRyPFdLVXNlclNjcmlwdD4gYmFzaWNVc2VyU2NyaXB0ID0gYWRvcHRO
UyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6QCIiIGluamVjdGlvblRpbWU6
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5
OllFU10pOwotICAgIEVYUEVDVF9FUShbYmFzaWNVc2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxk
XSwgW19XS1VzZXJDb250ZW50V29ybGQgbm9ybWFsV29ybGRdKTsKKyAgICBFWFBFQ1RfTkUoW2Jh
c2ljVXNlclNjcmlwdCBfdXNlckNvbnRlbnRXb3JsZF0sIFtfV0tVc2VyQ29udGVudFdvcmxkIG5v
cm1hbFdvcmxkXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFtiYXNpY1VzZXJTY3JpcHQgX3VzZXJD
b250ZW50V29ybGRdLm5hbWUsIFtfV0tVc2VyQ29udGVudFdvcmxkIG5vcm1hbFdvcmxkXS5uYW1l
KTsKICAgICBFWFBFQ1RfTlVMTChbYmFzaWNVc2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxkXS5u
YW1lKTsKIH0KIAotVEVTVChVc2VyQ29udGVudFdvcmxkLCBOb3JtYWxXb3JsZFVzZXJTY3JpcHQp
CitURVNUKENvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGRVc2VyU2NyaXB0KQogewogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIApAQCAtNzYsMTYgKzc3LDE3IEBA
IFRFU1QoVXNlckNvbnRlbnRXb3JsZCwgTm9ybWFsV29ybGRVc2VyU2MKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLVRFU1QoVXNlckNvbnRlbnRXb3JsZCwgSXNv
bGF0ZWRXb3JsZCkKK1RFU1QoQ29udGVudFdvcmxkLCBJc29sYXRlZFdvcmxkKQogewogICAgIFJl
dGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiBpc29sYXRlZFdvcmxkID0gW19XS1VzZXJDb250
ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwogICAgIEVYUEVDVF9XS19TVFJF
UShbaXNvbGF0ZWRXb3JsZCBuYW1lXSwgQCJUZXN0V29ybGQiKTsKIAogICAgIFJldGFpblB0cjxX
S1VzZXJTY3JpcHQ+IHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBf
aW5pdFdpdGhTb3VyY2U6QCIiIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFUyBsZWdhY3lXaGl0ZWxpc3Q6QFtd
IGxlZ2FjeUJsYWNrbGlzdDpAW10gdXNlckNvbnRlbnRXb3JsZDppc29sYXRlZFdvcmxkLmdldCgp
XSk7Ci0gICAgRVhQRUNUX0VRKFt1c2VyU2NyaXB0IF91c2VyQ29udGVudFdvcmxkXSwgaXNvbGF0
ZWRXb3JsZC5nZXQoKSk7CisgICAgRVhQRUNUX05FKFt1c2VyU2NyaXB0IF91c2VyQ29udGVudFdv
cmxkXSwgaXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt1c2VyU2Ny
aXB0IF91c2VyQ29udGVudFdvcmxkXS5uYW1lLCBbaXNvbGF0ZWRXb3JsZCBuYW1lXSk7CiB9CiAK
LVRFU1QoVXNlckNvbnRlbnRXb3JsZCwgSXNvbGF0ZWRXb3JsZFVzZXJTY3JpcHQpCitURVNUKENv
bnRlbnRXb3JsZCwgSXNvbGF0ZWRXb3JsZFVzZXJTY3JpcHQpCiB7CiAgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCg==
</data>
<flag name="review"
          id="407340"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>