<?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>228196</bug_id>
          
          <creation_ts>2021-07-22 13:59:49 -0700</creation_ts>
          <short_desc>Rename AtomicHTMLToken to AtomHTMLToken</short_desc>
          <delta_ts>2021-07-22 15:08:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778820</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 13:59:49 -0700</bug_when>
    <thetext>Rename AtomicHTMLToken to AtomHTMLToken</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778821</commentid>
    <comment_count>1</comment_count>
      <attachid>434034</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-22 14:00:48 -0700</bug_when>
    <thetext>Created attachment 434034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778826</commentid>
    <comment_count>2</comment_count>
      <attachid>434034</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-07-22 14:12:47 -0700</bug_when>
    <thetext>Comment on attachment 434034
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778856</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-22 15:07:59 -0700</bug_when>
    <thetext>Committed r280199 (239887@main): &lt;https://commits.webkit.org/239887@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434034.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778857</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-22 15:08:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/80984438&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434034</attachid>
            <date>2021-07-22 14:00:48 -0700</date>
            <delta_ts>2021-07-22 15:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228196-20210722140048.patch</filename>
            <type>text/plain</type>
            <size>71140</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ5YmNmZmJjOTc0OThi
Yjg5ZGZlNWNlNmNjNzA0OTUwMzdmMTY2ZS4uOWQ1ZWFjMmVhZTE5OGMxNThhNGJjYmUxOWNlMTRj
NGQ0YjhlZjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAyMS0wNy0yMiAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBBdG9taWNI
VE1MVG9rZW4gdG8gQXRvbUhUTUxUb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIHJlbmFtZSBBdG9taWNIVE1MVG9rZW4gdG8gQXRv
bUhUTUxUb2tlbiBhcyB3ZSBkaWQgZm9yIEF0b21TdHJpbmcgKEF0b21pY1N0cmluZyA9PiBBdG9t
U3RyaW5nKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9tSFRNTFRva2VuLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaC4KKyAgICAgICAgKFdlYkNv
cmU6OkF0b21IVE1MVG9rZW46OkF0b21IVE1MVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6QXRv
bUhUTUxUb2tlbjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9tSFRNTFRva2Vu
OjpuYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF0b21IVE1MVG9rZW46OnNldE5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXRvbUhUTUxUb2tlbjo6c2VsZkNsb3NpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbUhUTUxUb2tlbjo6YXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdG9tSFRNTFRva2VuOjphdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21IVE1MVG9rZW46OmNoYXJhY3RlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QXRvbUhUTUxUb2tlbjo6Y2hhcmFjdGVyc0xlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdG9tSFRNTFRva2VuOjpjaGFyYWN0ZXJzSXNBbGw4Qml0RGF0YSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBdG9tSFRNTFRva2VuOjpjb21tZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21IVE1MVG9rZW46OmZvcmNlUXVpcmtzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF0b21IVE1MVG9rZW46OnB1YmxpY0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXRvbUhUTUxUb2tlbjo6c3lzdGVtSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBdG9tSFRNTFRva2VuOjppbml0aWFsaXplQXR0cmlidXRlcyk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0SFRNTEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENv
bnN0cnVjdGlvblNpdGU6Om1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MSHRtbFN0YXJ0
VGFnSW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRIVE1MQm9keVN0YXJ0VGFnSW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnREb2N0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MSGVhZEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxC
b2R5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0SFRNTEZvcm1FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRIVE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2lu
Z0hUTUxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpp
bnNlcnRGb3JtYXR0aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0U2NyaXB0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0Rm9yZWlnbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlSFRNTEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6
OmNyZWF0ZUVsZW1lbnRGcm9tU2F2ZWRUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1
Y3RUcmVlRnJvbUhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRl
bS5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU3RhY2tJdGVtOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9r
ZW5CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RU
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0RvY3R5cGVUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NGYWtlUEVuZFRhZ0lm
UEluQnV0dG9uU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRqdXN0U1ZHVGFnTmFtZUNhc2UpOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RTVkdBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1hdGhNTEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6YWRqdXN0Rm9yZWlnbkF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRHZW5lcmljSFRNTEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVGVtcGxhdGVTdGFydFRhZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUZW1wbGF0ZUVuZFRhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGVGb3JJblRlbXBs
YXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWdGb3JJblRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0h0bWxTdGFydFRhZ0ZvckluQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0FueU90aGVyRW5kVGFnRm9ySW5Cb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zvcklu
Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zv
ckluQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
RW5kVGFnRm9ySW5UYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFy
YWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRQaG9uZU51
bWJlckxpbmspOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5k
T2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6ZGVmYXVsdEZvckJl
Zm9yZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9y
QmVmb3JlSGVhZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRG
b3JJbkhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9y
SW5IZWFkTm9zY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpkZWZh
dWx0Rm9yQWZ0ZXJIZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29u
dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpoYXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cGFyc2VFcnJvcik6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6
aW5zZXJ0RmFrZVByZUVsZW1lbnQpOgorCiAyMDIxLTA3LTIyICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWljcm8tb3B0aW1pemUgaW5uZXJIVE1MCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZjAxYjk5MjdlM2NjNjIyZTljY2MwMGIxMWViMmEyY2RkMDNmNzUzNy4uNzYxMDQxOGJiZmE4ODZm
OTc0OGQ1NTlkYTRhYmE4Y2E1OGUxYmY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyMDQsNyArMTIyMDQsNyBAQAogCQk5
N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdWZmaXhUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNSAvKiBIVE1MU3RhY2tJdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxTdGFja0l0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE2IC8qIEhUTUxUb2tlbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVG9rZW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8qIEF0b21pY0hUTUxU
b2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9taWNIVE1MVG9rZW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3
IC8qIEF0b21IVE1MVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRv
bUhUTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0M0NzFEOTEyRjky
NUJDMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA7IHBhdGggPSBj
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTdDNDcxREExMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3kuaDsg
cGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTdEMkFEMDExNEI4MjNBNjAwOTNERjMyIC8qIERPTVdpbmRvd1Byb3BlcnR5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd1Byb3BlcnR5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NTkzLDcgKzI0NTkzLDcgQEAK
IAkJOTdDMUY1NTExMjI4NTU4ODAwRURFNjE2IC8qIHBhcnNlciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJOTdDMUY1NTIxMjI4NTVDQjAwRURFNjE3IC8q
IEF0b21pY0hUTUxUb2tlbi5oICovLAorCQkJCTk3QzFGNTUyMTIyODU1Q0IwMEVERTYxNyAvKiBB
dG9tSFRNTFRva2VuLmggKi8sCiAJCQkJOTc3QjM4NDkxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1By
ZWxvYWRTY2FubmVyLmNwcCAqLywKIAkJCQk5NzdCMzg0QTEyMjg4M0U5MDBCODFGRjggLyogQ1NT
UHJlbG9hZFNjYW5uZXIuaCAqLywKIAkJCQk5NzdCMzg0QjEyMjg4M0U5MDBCODFGRjggLyogSFRN
TENvbnN0cnVjdGlvblNpdGUuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQXRvbUhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQXRv
bUhUTUxUb2tlbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNDU1MjFkMzRlYzQyZDg5NGViZDZlZmYyOTIyYjdh
ZjRlYzZjNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9B
dG9tSFRNTFRva2VuLmgKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJIVE1MVG9r
ZW4uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdG9tSFRNTFRva2VuIHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBBdG9tSFRNTFRva2VuKEhUTUxUb2tlbiYpOworICAgIEF0b21I
VE1MVG9rZW4oSFRNTFRva2VuOjpUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWZWN0b3I8
QXR0cmlidXRlPiYmID0geyB9KTsgLy8gT25seSBTdGFydFRhZyBvciBFbmRUYWcuCisKKyAgICBB
dG9tSFRNTFRva2VuKGNvbnN0IEF0b21IVE1MVG9rZW4mKSA9IGRlbGV0ZTsKKyAgICBBdG9tSFRN
TFRva2VuKEF0b21IVE1MVG9rZW4mJikgPSBkZWZhdWx0OworCisgICAgSFRNTFRva2VuOjpUeXBl
IHR5cGUoKSBjb25zdDsKKworICAgIC8vIFN0YXJ0VGFnLCBFbmRUYWcsIERPQ1RZUEUuCisKKyAg
ICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbVN0cmluZyYpOworCisgICAgY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSgpIGNvbnN0OworCisgICAgLy8gRE9DVFlQRS4KKworICAgIGJvb2wgZm9yY2VRdWly
a3MoKSBjb25zdDsKKyAgICBTdHJpbmcgcHVibGljSWRlbnRpZmllcigpIGNvbnN0OworICAgIFN0
cmluZyBzeXN0ZW1JZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICAvLyBTdGFydFRhZywgRW5kVGFn
LgorCisgICAgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKTsKKworICAgIGJvb2wgc2Vs
ZkNsb3NpbmcoKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRl
cygpIGNvbnN0OworCisgICAgLy8gQ2hhcmFjdGVycworCisgICAgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJzTGVuZ3RoKCkgY29uc3Q7Cisg
ICAgYm9vbCBjaGFyYWN0ZXJzSXNBbGw4Qml0RGF0YSgpIGNvbnN0OworCisgICAgLy8gQ29tbWVu
dAorCisgICAgY29uc3QgU3RyaW5nJiBjb21tZW50KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
SFRNTFRva2VuOjpUeXBlIG1fdHlwZTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUF0dHJpYnV0ZXMo
Y29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKTsKKworICAgIEF0b21T
dHJpbmcgbV9uYW1lOyAvLyBTdGFydFRhZywgRW5kVGFnLCBET0NUWVBFLgorCisgICAgU3RyaW5n
IG1fZGF0YTsgLy8gQ29tbWVudAorCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoZSBj
aGFyYWN0ZXJzIG91dCBvZiB0aGUgSFRNTFRva2VuLCBzbyB3ZSBrZWVwIGEgcG9pbnRlciB0byBp
dHMgYnVmZmVyIGluc3RlYWQuCisgICAgLy8gVGhpcyBidWZmZXIgaXMgb3duZWQgYnkgdGhlIEhU
TUxUb2tlbiBhbmQgY2F1c2VzIGEgbGlmZXRpbWUgZGVwZW5kZW5jZSBiZXR3ZWVuIHRoZXNlIG9i
amVjdHMuCisgICAgLy8gRklYTUU6IEFkZCBhIG1lY2hhbmlzbSBmb3IgImludGVybmFsaXppbmci
IHRoZSBjaGFyYWN0ZXJzIHdoZW4gdGhlIEhUTUxUb2tlbiBpcyBkZXN0cm95ZWQuCisgICAgY29u
c3QgVUNoYXIqIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzOyAvLyBDaGFyYWN0ZXIKKyAgICB1bnNpZ25l
ZCBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsgLy8gQ2hhcmFjdGVyCisgICAgYm9vbCBtX2V4
dGVybmFsQ2hhcmFjdGVyc0lzQWxsOEJpdERhdGE7IC8vIENoYXJhY3RlcgorCisgICAgc3RkOjp1
bmlxdWVfcHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOyAvLyBET0NUWVBFLgorCisgICAg
Ym9vbCBtX3NlbGZDbG9zaW5nOyAvLyBTdGFydFRhZywgRW5kVGFnLgorICAgIFZlY3RvcjxBdHRy
aWJ1dGU+IG1fYXR0cmlidXRlczsgLy8gU3RhcnRUYWcsIEVuZFRhZy4KK307CisKK2NvbnN0IEF0
dHJpYnV0ZSogZmluZEF0dHJpYnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKK2Jvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+
JiwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKTsKKworaW5saW5lIEhUTUxUb2tlbjo6VHlw
ZSBBdG9tSFRNTFRva2VuOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQor
CitpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgQXRvbUhUTUxUb2tlbjo6bmFtZSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW46OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKKyAgICBy
ZXR1cm4gbV9uYW1lOworfQorCitpbmxpbmUgdm9pZCBBdG9tSFRNTFRva2VuOjpzZXROYW1lKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRN
TFRva2VuOjpET0NUWVBFKTsKKyAgICBtX25hbWUgPSBuYW1lOworfQorCitpbmxpbmUgYm9vbCBB
dG9tSFRNTFRva2VuOjpzZWxmQ2xvc2luZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7Cisg
ICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7Cit9CisKK2lubGluZSBWZWN0b3I8QXR0cmlidXRlPiYg
QXRvbUhUTUxUb2tlbjo6YXR0cmlidXRlcygpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1M
VG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CisgICAgcmV0
dXJuIG1fYXR0cmlidXRlczsKK30KKworaW5saW5lIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBB
dG9tSFRNTFRva2VuOjphdHRyaWJ1dGVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKKyAg
ICByZXR1cm4gbV9hdHRyaWJ1dGVzOworfQorCitpbmxpbmUgY29uc3QgVUNoYXIqIEF0b21IVE1M
VG9rZW46OmNoYXJhY3RlcnMoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuOjpDaGFyYWN0ZXIpOworICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKK30KKwor
aW5saW5lIHVuc2lnbmVkIEF0b21IVE1MVG9rZW46OmNoYXJhY3RlcnNMZW5ndGgoKSBjb25zdAor
eworICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpOworICAgIHJldHVy
biBtX2V4dGVybmFsQ2hhcmFjdGVyc0xlbmd0aDsKK30KKworaW5saW5lIGJvb2wgQXRvbUhUTUxU
b2tlbjo6Y2hhcmFjdGVyc0lzQWxsOEJpdERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2V4
dGVybmFsQ2hhcmFjdGVyc0lzQWxsOEJpdERhdGE7Cit9CisKK2lubGluZSBjb25zdCBTdHJpbmcm
IEF0b21IVE1MVG9rZW46OmNvbW1lbnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuOjpDb21tZW50KTsKKyAgICByZXR1cm4gbV9kYXRhOworfQorCitpbmxpbmUgYm9v
bCBBdG9tSFRNTFRva2VuOjpmb3JjZVF1aXJrcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOworICAgIHJldHVybiBtX2RvY3R5cGVEYXRhLT5mb3Jj
ZVF1aXJrczsKK30KKworaW5saW5lIFN0cmluZyBBdG9tSFRNTFRva2VuOjpwdWJsaWNJZGVudGlm
aWVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7
CisgICAgaWYgKCFtX2RvY3R5cGVEYXRhLT5oYXNQdWJsaWNJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZThCaXRJZlBvc3Np
YmxlKG1fZG9jdHlwZURhdGEtPnB1YmxpY0lkZW50aWZpZXIpOworfQorCitpbmxpbmUgU3RyaW5n
IEF0b21IVE1MVG9rZW46OnN5c3RlbUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmICghbV9k
b2N0eXBlRGF0YS0+aGFzU3lzdGVtSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZShtX2RvY3R5cGVE
YXRhLT5zeXN0ZW1JZGVudGlmaWVyKTsKK30KKworaW5saW5lIGNvbnN0IEF0dHJpYnV0ZSogZmlu
ZEF0dHJpYnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcywgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkKK3sKKyAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0
ZXMpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkubWF0Y2hlcyhuYW1lKSkKKyAgICAg
ICAgICAgIHJldHVybiAmYXR0cmlidXRlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworaW5saW5lIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRy
aWJ1dGVzLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCit7CisgICAgZm9yIChhdXRvJiBh
dHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGUubG9jYWxOYW1l
KCkgPT0gbG9jYWxOYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworaW5saW5lIHZvaWQgQXRvbUhUTUxUb2tlbjo6aW5pdGlhbGl6ZUF0
dHJpYnV0ZXMoY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKQorewor
ICAgIHVuc2lnbmVkIHNpemUgPSBhdHRyaWJ1dGVzLnNpemUoKTsKKyAgICBpZiAoIXNpemUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNpemUpOworICAgIGZvciAoYXV0byYgYXR0cmlidXRlIDogYXR0cmlidXRlcykgeworICAgICAg
ICBpZiAoYXR0cmlidXRlLm5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgQXRvbVN0cmluZyBsb2NhbE5hbWUoYXR0cmlidXRlLm5hbWUpOworCisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIE5eMiBmb3IgdGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzLgorICAg
ICAgICBpZiAoIWhhc0F0dHJpYnV0ZShtX2F0dHJpYnV0ZXMsIGxvY2FsTmFtZSkpCisgICAgICAg
ICAgICBtX2F0dHJpYnV0ZXMudW5jaGVja2VkQXBwZW5kKEF0dHJpYnV0ZShRdWFsaWZpZWROYW1l
KG51bGxBdG9tKCksIGxvY2FsTmFtZSwgbnVsbEF0b20oKSksIEF0b21TdHJpbmcoYXR0cmlidXRl
LnZhbHVlKSkpOworICAgIH0KK30KKworaW5saW5lIEF0b21IVE1MVG9rZW46OkF0b21IVE1MVG9r
ZW4oSFRNTFRva2VuJiB0b2tlbikKKyAgICA6IG1fdHlwZSh0b2tlbi50eXBlKCkpCit7CisgICAg
c3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEhU
TUxUb2tlbjo6RE9DVFlQRToKKyAgICAgICAgbV9uYW1lID0gQXRvbVN0cmluZyh0b2tlbi5uYW1l
KCkpOworICAgICAgICBtX2RvY3R5cGVEYXRhID0gdG9rZW4ucmVsZWFzZURvY3R5cGVEYXRhKCk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEhUTUxUb2tlbjo6RW5kT2ZGaWxlOgorICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgorICAgIGNhc2UgSFRNTFRv
a2VuOjpFbmRUYWc6CisgICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tlbi5zZWxmQ2xvc2luZygp
OworICAgICAgICBtX25hbWUgPSBBdG9tU3RyaW5nKHRva2VuLm5hbWUoKSk7CisgICAgICAgIGlu
aXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKKyAgICAgICAgaWYgKHRva2VuLmNvbW1lbnRJ
c0FsbDhCaXREYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmc6Om1ha2U4Qml0RnJv
bTE2Qml0U291cmNlKHRva2VuLmNvbW1lbnQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fZGF0YSA9IFN0cmluZyh0b2tlbi5jb21tZW50KCkpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKKyAgICAgICAgbV9leHRlcm5hbENoYXJhY3RlcnMg
PSB0b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgpOworICAgICAgICBtX2V4dGVybmFsQ2hhcmFjdGVy
c0xlbmd0aCA9IHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCk7CisgICAgICAgIG1fZXh0ZXJuYWxD
aGFyYWN0ZXJzSXNBbGw4Qml0RGF0YSA9IHRva2VuLmNoYXJhY3RlcnNJc0FsbDhCaXREYXRhKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K2lubGluZSBBdG9tSFRNTFRva2VuOjpBdG9tSFRNTFRva2VuKEhUTUxUb2tlbjo6VHlwZSB0eXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBWZWN0b3I8QXR0cmlidXRlPiYmIGF0dHJpYnV0ZXMp
CisgICAgOiBtX3R5cGUodHlwZSkKKyAgICAsIG1fbmFtZShuYW1lKQorICAgICwgbV9zZWxmQ2xv
c2luZyhmYWxzZSkKKyAgICAsIG1fYXR0cmlidXRlcyhXVEZNb3ZlKGF0dHJpYnV0ZXMpKQorewor
ICAgIEFTU0VSVCh0eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgdHlwZSA9PSBIVE1MVG9r
ZW46OkVuZFRhZyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0F0b21pY0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI5NTk3NmYyMWU2NmVmY2NhMGNlMWM0NzQyODQ1NjhiNWJjNDJhNjIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQXRvbWljSFRNTFRva2VuLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEF0b21pY0hUTUxUb2tlbiB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQXRvbWljSFRN
TFRva2VuKEhUTUxUb2tlbiYpOwotICAgIEF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFZlY3RvcjxBdHRyaWJ1dGU+JiYgPSB7IH0pOyAvLyBP
bmx5IFN0YXJ0VGFnIG9yIEVuZFRhZy4KLQotICAgIEF0b21pY0hUTUxUb2tlbihjb25zdCBBdG9t
aWNIVE1MVG9rZW4mKSA9IGRlbGV0ZTsKLSAgICBBdG9taWNIVE1MVG9rZW4oQXRvbWljSFRNTFRv
a2VuJiYpID0gZGVmYXVsdDsKLQotICAgIEhUTUxUb2tlbjo6VHlwZSB0eXBlKCkgY29uc3Q7Ci0K
LSAgICAvLyBTdGFydFRhZywgRW5kVGFnLCBET0NUWVBFLgotCi0gICAgdm9pZCBzZXROYW1lKGNv
bnN0IEF0b21TdHJpbmcmKTsKLQotICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25zdDsK
LQotICAgIC8vIERPQ1RZUEUuCi0KLSAgICBib29sIGZvcmNlUXVpcmtzKCkgY29uc3Q7Ci0gICAg
U3RyaW5nIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgc3lzdGVtSWRlbnRp
ZmllcigpIGNvbnN0OwotCi0gICAgLy8gU3RhcnRUYWcsIEVuZFRhZy4KLQotICAgIFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKCk7Ci0KLSAgICBib29sIHNlbGZDbG9zaW5nKCkgY29uc3Q7
Ci0gICAgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMoKSBjb25zdDsKLQotICAg
IC8vIENoYXJhY3RlcnMKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgY2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0OwotICAgIGJvb2wgY2hhcmFjdGVy
c0lzQWxsOEJpdERhdGEoKSBjb25zdDsKLQotICAgIC8vIENvbW1lbnQKLQotICAgIGNvbnN0IFN0
cmluZyYgY29tbWVudCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEhUTUxUb2tlbjo6VHlwZSBt
X3R5cGU7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVzKGNvbnN0IEhUTUxUb2tlbjo6
QXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcyk7Ci0KLSAgICBBdG9tU3RyaW5nIG1fbmFtZTsgLy8g
U3RhcnRUYWcsIEVuZFRhZywgRE9DVFlQRS4KLQotICAgIFN0cmluZyBtX2RhdGE7IC8vIENvbW1l
bnQKLQotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY29weSB0aGUgY2hhcmFjdGVycyBvdXQgb2Yg
dGhlIEhUTUxUb2tlbiwgc28gd2Uga2VlcCBhIHBvaW50ZXIgdG8gaXRzIGJ1ZmZlciBpbnN0ZWFk
LgotICAgIC8vIFRoaXMgYnVmZmVyIGlzIG93bmVkIGJ5IHRoZSBIVE1MVG9rZW4gYW5kIGNhdXNl
cyBhIGxpZmV0aW1lIGRlcGVuZGVuY2UgYmV0d2VlbiB0aGVzZSBvYmplY3RzLgotICAgIC8vIEZJ
WE1FOiBBZGQgYSBtZWNoYW5pc20gZm9yICJpbnRlcm5hbGl6aW5nIiB0aGUgY2hhcmFjdGVycyB3
aGVuIHRoZSBIVE1MVG9rZW4gaXMgZGVzdHJveWVkLgotICAgIGNvbnN0IFVDaGFyKiBtX2V4dGVy
bmFsQ2hhcmFjdGVyczsgLy8gQ2hhcmFjdGVyCi0gICAgdW5zaWduZWQgbV9leHRlcm5hbENoYXJh
Y3RlcnNMZW5ndGg7IC8vIENoYXJhY3RlcgotICAgIGJvb2wgbV9leHRlcm5hbENoYXJhY3RlcnNJ
c0FsbDhCaXREYXRhOyAvLyBDaGFyYWN0ZXIKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N0eXBl
RGF0YT4gbV9kb2N0eXBlRGF0YTsgLy8gRE9DVFlQRS4KLQotICAgIGJvb2wgbV9zZWxmQ2xvc2lu
ZzsgLy8gU3RhcnRUYWcsIEVuZFRhZy4KLSAgICBWZWN0b3I8QXR0cmlidXRlPiBtX2F0dHJpYnV0
ZXM7IC8vIFN0YXJ0VGFnLCBFbmRUYWcuCi19OwotCi1jb25zdCBBdHRyaWJ1dGUqIGZpbmRBdHRy
aWJ1dGUoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mLCBjb25zdCBRdWFsaWZpZWROYW1lJik7Ci1i
b29sIGhhc0F0dHJpYnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYsIGNvbnN0IEF0b21TdHJp
bmcmIGxvY2FsTmFtZSk7Ci0KLWlubGluZSBIVE1MVG9rZW46OlR5cGUgQXRvbWljSFRNTFRva2Vu
Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90eXBlOwotfQotCi1pbmxpbmUgY29uc3Qg
QXRvbVN0cmluZyYgQXRvbWljSFRNTFRva2VuOjpuYW1lKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlbjo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5k
VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkRPQ1RZUEUpOwotICAgIHJldHVybiBtX25hbWU7
Ci19Ci0KLWlubGluZSB2b2lkIEF0b21pY0hUTUxUb2tlbjo6c2V0TmFtZShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKQotewotICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuOjpTdGFydFRhZyB8
fCBtX3R5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RE9D
VFlQRSk7Ci0gICAgbV9uYW1lID0gbmFtZTsKLX0KLQotaW5saW5lIGJvb2wgQXRvbWljSFRNTFRv
a2VuOjpzZWxmQ2xvc2luZygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7Ci0gICAgcmV0dXJu
IG1fc2VsZkNsb3Npbmc7Ci19Ci0KLWlubGluZSBWZWN0b3I8QXR0cmlidXRlPiYgQXRvbWljSFRN
TFRva2VuOjphdHRyaWJ1dGVzKCkKLXsKLSAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlbjo6
U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKLSAgICByZXR1cm4gbV9h
dHRyaWJ1dGVzOwotfQotCi1pbmxpbmUgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIEF0b21pY0hU
TUxUb2tlbjo6YXR0cmlidXRlcygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1M
VG9rZW46OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7Ci0gICAgcmV0
dXJuIG1fYXR0cmlidXRlczsKLX0KLQotaW5saW5lIGNvbnN0IFVDaGFyKiBBdG9taWNIVE1MVG9r
ZW46OmNoYXJhY3RlcnMoKSBjb25zdAotewotICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
OjpDaGFyYWN0ZXIpOwotICAgIHJldHVybiBtX2V4dGVybmFsQ2hhcmFjdGVyczsKLX0KLQotaW5s
aW5lIHVuc2lnbmVkIEF0b21pY0hUTUxUb2tlbjo6Y2hhcmFjdGVyc0xlbmd0aCgpIGNvbnN0Ci17
Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7Ci0gICAgcmV0dXJu
IG1fZXh0ZXJuYWxDaGFyYWN0ZXJzTGVuZ3RoOwotfQotCi1pbmxpbmUgYm9vbCBBdG9taWNIVE1M
VG9rZW46OmNoYXJhY3RlcnNJc0FsbDhCaXREYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9l
eHRlcm5hbENoYXJhY3RlcnNJc0FsbDhCaXREYXRhOwotfQotCi1pbmxpbmUgY29uc3QgU3RyaW5n
JiBBdG9taWNIVE1MVG9rZW46OmNvbW1lbnQoKSBjb25zdAotewotICAgIEFTU0VSVChtX3R5cGUg
PT0gSFRNTFRva2VuOjpDb21tZW50KTsKLSAgICByZXR1cm4gbV9kYXRhOwotfQotCi1pbmxpbmUg
Ym9vbCBBdG9taWNIVE1MVG9rZW46OmZvcmNlUXVpcmtzKCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlbjo6RE9DVFlQRSk7Ci0gICAgcmV0dXJuIG1fZG9jdHlwZURhdGEt
PmZvcmNlUXVpcmtzOwotfQotCi1pbmxpbmUgU3RyaW5nIEF0b21pY0hUTUxUb2tlbjo6cHVibGlj
SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW46OkRP
Q1RZUEUpOwotICAgIGlmICghbV9kb2N0eXBlRGF0YS0+aGFzUHVibGljSWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0
SWZQb3NzaWJsZShtX2RvY3R5cGVEYXRhLT5wdWJsaWNJZGVudGlmaWVyKTsKLX0KLQotaW5saW5l
IFN0cmluZyBBdG9taWNIVE1MVG9rZW46OnN5c3RlbUlkZW50aWZpZXIoKSBjb25zdAotewotICAg
IGlmICghbV9kb2N0eXBlRGF0YS0+aGFzU3lzdGVtSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGU4Qml0SWZQb3NzaWJsZSht
X2RvY3R5cGVEYXRhLT5zeXN0ZW1JZGVudGlmaWVyKTsKLX0KLQotaW5saW5lIGNvbnN0IEF0dHJp
YnV0ZSogZmluZEF0dHJpYnV0ZShjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKLXsKLSAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6
IGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkubWF0Y2hlcyhuYW1l
KSkKLSAgICAgICAgICAgIHJldHVybiAmYXR0cmlidXRlOwotICAgIH0KLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQotaW5saW5lIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFZlY3RvcjxBdHRyaWJ1
dGU+JiBhdHRyaWJ1dGVzLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpCi17Ci0gICAgZm9y
IChhdXRvJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVzKSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUu
bG9jYWxOYW1lKCkgPT0gbG9jYWxOYW1lKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIHZvaWQgQXRvbWljSFRNTFRva2VuOjpp
bml0aWFsaXplQXR0cmlidXRlcyhjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3QmIGF0dHJp
YnV0ZXMpCi17Ci0gICAgdW5zaWduZWQgc2l6ZSA9IGF0dHJpYnV0ZXMuc2l6ZSgpOwotICAgIGlm
ICghc2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9hdHRyaWJ1dGVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0gICAgZm9yIChhdXRvJiBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGVz
KSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBBdG9tU3RyaW5nIGxvY2FsTmFtZShhdHRyaWJ1dGUubmFtZSk7
Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgTl4yIGZvciB0aGUgbnVtYmVyIG9mIGF0dHJp
YnV0ZXMuCi0gICAgICAgIGlmICghaGFzQXR0cmlidXRlKG1fYXR0cmlidXRlcywgbG9jYWxOYW1l
KSkKLSAgICAgICAgICAgIG1fYXR0cmlidXRlcy51bmNoZWNrZWRBcHBlbmQoQXR0cmlidXRlKFF1
YWxpZmllZE5hbWUobnVsbEF0b20oKSwgbG9jYWxOYW1lLCBudWxsQXRvbSgpKSwgQXRvbVN0cmlu
ZyhhdHRyaWJ1dGUudmFsdWUpKSk7Ci0gICAgfQotfQotCi1pbmxpbmUgQXRvbWljSFRNTFRva2Vu
OjpBdG9taWNIVE1MVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKLSAgICA6IG1fdHlwZSh0b2tlbi50
eXBlKCkpCi17Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEhUTUxUb2tlbjo6VW5p
bml0aWFsaXplZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKLSAgICAgICAgbV9uYW1lID0gQXRvbVN0
cmluZyh0b2tlbi5uYW1lKCkpOwotICAgICAgICBtX2RvY3R5cGVEYXRhID0gdG9rZW4ucmVsZWFz
ZURvY3R5cGVEYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tlbjo6RW5k
T2ZGaWxlOgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgot
ICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0b2tl
bi5zZWxmQ2xvc2luZygpOwotICAgICAgICBtX25hbWUgPSBBdG9tU3RyaW5nKHRva2VuLm5hbWUo
KSk7Ci0gICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEhUTUxUb2tlbjo6Q29tbWVudDoKLSAgICAgICAgaWYg
KHRva2VuLmNvbW1lbnRJc0FsbDhCaXREYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBTdHJp
bmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKHRva2VuLmNvbW1lbnQoKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fZGF0YSA9IFN0cmluZyh0b2tlbi5jb21tZW50KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBIVE1MVG9rZW46OkNoYXJhY3RlcjoKLSAgICAgICAgbV9leHRl
cm5hbENoYXJhY3RlcnMgPSB0b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgpOwotICAgICAgICBtX2V4
dGVybmFsQ2hhcmFjdGVyc0xlbmd0aCA9IHRva2VuLmNoYXJhY3RlcnMoKS5zaXplKCk7Ci0gICAg
ICAgIG1fZXh0ZXJuYWxDaGFyYWN0ZXJzSXNBbGw4Qml0RGF0YSA9IHRva2VuLmNoYXJhY3RlcnNJ
c0FsbDhCaXREYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLWlubGluZSBBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbihI
VE1MVG9rZW46OlR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgVmVjdG9yPEF0dHJp
YnV0ZT4mJiBhdHRyaWJ1dGVzKQotICAgIDogbV90eXBlKHR5cGUpCi0gICAgLCBtX25hbWUobmFt
ZSkKLSAgICAsIG1fc2VsZkNsb3NpbmcoZmFsc2UpCi0gICAgLCBtX2F0dHJpYnV0ZXMoV1RGTW92
ZShhdHRyaWJ1dGVzKSkKLXsKLSAgICBBU1NFUlQodHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFn
IHx8IHR5cGUgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKaW5kZXggNWQ4NTJlYzEwY2U0YmNmNmQ4ZGMxYjMxODVjZGMxMmI2ZTdkNzQzOC4u
MjJmZDRmOWQwOGIzNzExYzNlYzRhNTg1NmY0NzY3ZTk0NDFkZGQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNjIs
NyArNjIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0QXR0cmlidXRlcyhFbGVtZW50JiBlbGVt
ZW50LCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcwogICAgIGVsZW1lbnQucGFyc2VyU2V0
QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldEF0dHJp
YnV0ZXMoRWxlbWVudCYgZWxlbWVudCwgQXRvbWljSFRNTFRva2VuJiB0b2tlbiwgUGFyc2VyQ29u
dGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQorc3RhdGljIGlubGluZSB2b2lkIHNldEF0
dHJpYnV0ZXMoRWxlbWVudCYgZWxlbWVudCwgQXRvbUhUTUxUb2tlbiYgdG9rZW4sIFBhcnNlckNv
bnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKIHsKICAgICBzZXRBdHRyaWJ1dGVzKGVs
ZW1lbnQsIHRva2VuLmF0dHJpYnV0ZXMoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CkBAIC0y
NzMsNyArMjczLDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZGlzcGF0Y2hEb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGVJZk5lZWRlZCgpCiAgICAgICAgIGZyYW1lLT5pbmplY3RVc2VyU2Ny
aXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRTdGFydCk7CiB9CiAKLXZvaWQg
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0
b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0
SFRNTEh0bWxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAg
IGF1dG8gZWxlbWVudCA9IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAg
IHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgdG9rZW4sIG1fcGFyc2VyQ29udGVudFBvbGljeSk7CkBA
IC0yODUsNyArMjg1LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEh0
bWxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbWljSFRNTFRva2VuJiYgdG8KICAgICBkaXNwYXRjaERv
Y3VtZW50RWxlbWVudEF2YWlsYWJsZUlmTmVlZGVkKCk7CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVj
dGlvblNpdGU6Om1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KEF0b21pY0hUTUxU
b2tlbiYmIHRva2VuLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6bWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoQXRvbUhUTUxUb2tlbiYmIHRv
a2VuLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICh0b2tlbi5hdHRyaWJ1dGVzKCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6bWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoQXRvbWlj
SFRNTFRva2VuJiYKICAgICB9CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dEhUTUxIdG1sU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MSHRtbFN0YXJ0VGFnSW5Cb2R5KEF0b21IVE1M
VG9rZW4mJiB0b2tlbikKIHsKICAgICAvLyBGcmFnbWVudHMgZG8gbm90IGhhdmUgYSByb290IEhU
TUwgZWxlbWVudCwgc28gYW55IGFkZGl0aW9uYWwgSFRNTCBlbGVtZW50cwogICAgIC8vIGVuY291
bnRlcmVkIGR1cmluZyBmcmFnbWVudCBwYXJzaW5nIHNob3VsZCBiZSBpZ25vcmVkLgpAQCAtMzA2
LDcgKzMwNiw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIdG1sU3Rh
cnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAgICAgbWVyZ2VBdHRyaWJ1dGVz
RnJvbVRva2VuSW50b0VsZW1lbnQoV1RGTW92ZSh0b2tlbiksIG1fb3BlbkVsZW1lbnRzLmh0bWxF
bGVtZW50KCkpOwogfQogCi12b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MQm9k
eVN0YXJ0VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEJvZHlTdGFydFRhZ0luQm9keShBdG9tSFRNTFRva2VuJiYg
dG9rZW4pCiB7CiAgICAgbWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoV1RGTW92
ZSh0b2tlbiksIG1fb3BlbkVsZW1lbnRzLmJvZHlFbGVtZW50KCkpOwogfQpAQCAtNDE5LDcgKzQx
OSw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmZpbmlzaGVkUGFyc2luZygpCiAgICAg
bV9kb2N1bWVudC5maW5pc2hlZFBhcnNpbmcoKTsKIH0KIAotdm9pZCBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6aW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3ZvaWQgSFRNTENv
bnN0cnVjdGlvblNpdGU6Omluc2VydERvY3R5cGUoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewog
ICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpET0NUWVBFKTsKIApAQCAtNDQz
LDI2ICs0NDMsMjYgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0RG9jdHlwZShB
dG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICAgICAgc2V0Q29tcGF0aWJpbGl0eU1vZGVGcm9t
RG9jdHlwZSh0b2tlbi5uYW1lKCksIHB1YmxpY0lkLCBzeXN0ZW1JZCk7CiB9CiAKLXZvaWQgSFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydENvbW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4p
Cit2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50KEF0b21IVE1MVG9rZW4m
JiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVu
dCk7CiAgICAgYXR0YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgQ29tbWVudDo6Y3JlYXRlKG93bmVy
RG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpLCB0b2tlbi5jb21tZW50KCkpKTsKIH0KIAotdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbWljSFRNTFRv
a2VuJiYgdG9rZW4pCit2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRDb21tZW50T25E
b2N1bWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OkNvbW1lbnQpOwogICAgIGF0dGFjaExhdGVyKG1fYXR0YWNobWVudFJv
b3QsIENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jb21tZW50KCkpKTsKIH0KIAot
dm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50
KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5z
ZXJ0Q29tbWVudE9uSFRNTEh0bWxFbGVtZW50KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAg
ICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6Q29tbWVudCk7CiAgICAgQ29udGFp
bmVyTm9kZSYgcGFyZW50ID0gbV9vcGVuRWxlbWVudHMucm9vdE5vZGUoKTsKICAgICBhdHRhY2hM
YXRlcihwYXJlbnQsIENvbW1lbnQ6OmNyZWF0ZShwYXJlbnQuZG9jdW1lbnQoKSwgdG9rZW4uY29t
bWVudCgpKSk7CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIZWFk
RWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydEhUTUxIZWFkRWxlbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAg
QVNTRVJUKCFzaG91bGRGb3N0ZXJQYXJlbnQoKSk7CiAgICAgbV9oZWFkID0gSFRNTFN0YWNrSXRl
bTo6Y3JlYXRlKGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKSwgV1RGTW92ZSh0b2tlbikpOwpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxIZWFk
RWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBtX29wZW5FbGVtZW50cy5wdXNo
SFRNTEhlYWRFbGVtZW50KCptX2hlYWQpOwogfQogCi12b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnRIVE1MQm9keUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MQm9keUVsZW1lbnQoQXRvbUhUTUxUb2tlbiYm
IHRva2VuKQogewogICAgIEFTU0VSVCghc2hvdWxkRm9zdGVyUGFyZW50KCkpOwogICAgIGF1dG8g
Ym9keSA9IGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lk
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MQm9keUVsZW1lbnQoQXRvbWljSFRNTFRv
a2VuJiYgdG9rZW4pCiAgICAgbV9vcGVuRWxlbWVudHMucHVzaEhUTUxCb2R5RWxlbWVudChIVE1M
U3RhY2tJdGVtOjpjcmVhdGUoV1RGTW92ZShib2R5KSwgV1RGTW92ZSh0b2tlbikpKTsKIH0KIAot
dm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEZvcm1FbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuLCBib29sIGlzRGVtb3RlZCkKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6Omluc2VydEhUTUxGb3JtRWxlbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4sIGJvb2wgaXNE
ZW1vdGVkKQogewogICAgIGF1dG8gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KHRva2VuKTsK
ICAgICBhdXRvJiBmb3JtRWxlbWVudCA9IGRvd25jYXN0PEhUTUxGb3JtRWxlbWVudD4oZWxlbWVu
dC5nZXQoKSk7CkBAIC00OTEsMTQgKzQ5MSwxNCBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjppbnNlcnRIVE1MRm9ybUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4sIGJvb2wgaQog
ICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGZvcm1FbGVtZW50
LCBXVEZNb3ZlKHRva2VuKSkpOwogfQogCi12b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3ZvaWQgSFRNTENvbnN0cnVj
dGlvblNpdGU6Omluc2VydEhUTUxFbGVtZW50KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAg
ICBhdXRvIGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudCh0b2tlbik7CiAgICAgYXR0YWNoTGF0
ZXIoY3VycmVudE5vZGUoKSwgZWxlbWVudC5jb3B5UmVmKCkpOwogICAgIG1fb3BlbkVsZW1lbnRz
LnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKFdURk1vdmUoZWxlbWVudCksIFdURk1vdmUodG9r
ZW4pKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0
YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxl
bWVudEludGVyZmFjZShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3N0ZDo6dW5pcXVlX3B0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9tSFRNTFRva2VuJiYg
dG9rZW4pCiB7CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNl
ID0gbnVsbHB0cjsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVt
ZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSh0b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2Up
OwpAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEN1
c3RvbUVsZW1lbnQoUmVmPEVsZW1lbnQ+JiYgZWxlbWVudCwgY29uc3QgQXRvCiAgICAgZXhlY3V0
ZVF1ZXVlZFRhc2tzKCk7CiB9CiAKLXZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNl
bGZDbG9zaW5nSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21IVE1MVG9r
ZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3Rh
cnRUYWcpOwogICAgIC8vIE5vcm1hbGx5IEhUTUxFbGVtZW50U3RhY2sgaXMgcmVzcG9uc2libGUg
Zm9yIGNhbGxpbmcgZmluaXNoUGFyc2luZ0NoaWxkcmVuLApAQCAtNTI4LDcgKzUyOCw3IEBAIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQoQXRv
bWljSFRNTFRva2VuJiYgdG9rZW4pCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjYWNrbm93
bGVkZ2Utc2VsZi1jbG9zaW5nLWZsYWcKIH0KIAotdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
aW5zZXJ0Rm9ybWF0dGluZ0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRGb3JtYXR0aW5nRWxlbWVudChBdG9tSFRNTFRva2Vu
JiYgdG9rZW4pCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RoZS1zdGFjay1vZi1vcGVuLWVs
ZW1lbnRzCiAgICAgLy8gUG9zc2libGUgYWN0aXZlIGZvcm1hdHRpbmcgZWxlbWVudHMgaW5jbHVk
ZToKQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRG
b3JtYXR0aW5nRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBtX2FjdGl2ZUZv
cm1hdHRpbmdFbGVtZW50cy5hcHBlbmQoY3VycmVudFN0YWNrSXRlbSgpKTsKIH0KIAotdm9pZCBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0U2NyaXB0RWxlbWVudChBdG9taWNIVE1MVG9rZW4m
JiB0b2tlbikKK3ZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydFNjcmlwdEVsZW1lbnQo
QXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3NjcmlwdGluZy0xLmh0bWwjYWxy
ZWFkeS1zdGFydGVkCiAgICAgLy8gaHR0cDovL2h0bWw1Lm9yZy9zcGVjcy9kb20tcGFyc2luZy5o
dG1sI2RvbS1yYW5nZS1jcmVhdGVjb250ZXh0dWFsZnJhZ21lbnQKQEAgLTU1NCw3ICs1NTQsNyBA
QCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRTY3JpcHRFbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuKQogICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRNTFN0YWNrSXRlbTo6
Y3JlYXRlKFdURk1vdmUoZWxlbWVudCksIFdURk1vdmUodG9rZW4pKSk7CiB9CiAKLXZvaWQgSFRN
TENvbnN0cnVjdGlvblNpdGU6Omluc2VydEZvcmVpZ25FbGVtZW50KEF0b21pY0hUTUxUb2tlbiYm
IHRva2VuLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpCit2b2lkIEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRGb3JlaWduRWxlbWVudChBdG9tSFRNTFRva2VuJiYgdG9rZW4sIGNv
bnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIHBhcnNl
RXJyb3Igd2hlbiB4bWxucyBvciB4bWxuczp4bGluayBhcmUgd3JvbmcuCkBAIC02MzUsNyArNjM1
LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6dGFrZUFsbENoaWxkcmVuQW5kUmVwYXJl
bnQoSFRNTFN0YWNrSXRlbSYgbmV3UGFyZW50LAogICAgIG1fdGFza1F1ZXVlLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVh
dGVFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4sIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVz
cGFjZVVSSSkKK1JlZjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlRWxlbWVu
dChBdG9tSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJKQog
ewogICAgIFF1YWxpZmllZE5hbWUgdGFnTmFtZShudWxsQXRvbSgpLCB0b2tlbi5uYW1lKCksIG5h
bWVzcGFjZVVSSSk7CiAgICAgYXV0byBlbGVtZW50ID0gb3duZXJEb2N1bWVudEZvckN1cnJlbnRO
b2RlKCkuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCB0cnVlKTsKQEAgLTY2Myw3ICs2NjMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UoRG9jdW1lbnQmIG93bgogICAgIHJldHVybiByZWdpc3RyeS0+ZmluZEludGVyZmFj
ZShsb2NhbE5hbWUpOwogfQogCi1SZWZQdHI8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6
OmNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9taWNIVE1M
VG9rZW4mIHRva2VuLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqKiBjdXN0b21FbGVtZW50SW50
ZXJmYWNlKQorUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1M
RWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoQXRvbUhUTUxUb2tlbiYgdG9rZW4s
IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSoqIGN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpCiB7CiAg
ICAgYXV0byYgbG9jYWxOYW1lID0gdG9rZW4ubmFtZSgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGNh
bid0IHVzZSBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlRWxlbWVudCBiZWNhdXNlIHdlCkBA
IC03MDYsNyArNzA2LDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpj
cmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmYKICAgICByZXR1cm4gZWxl
bWVudDsKIH0KIAotUmVmPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1M
RWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQorUmVmPEVsZW1lbnQ+IEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudChBdG9tSFRNTFRva2VuJiB0b2tlbikKIHsKICAg
ICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9t
RWxlbWVudEludGVyZmFjZSh0b2tlbiwgbnVsbHB0cik7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwpA
QCAtNzE2LDcgKzcxNiw3IEBAIFJlZjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3Jl
YXRlSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIFJlZjxIVE1MU3RhY2tJdGVt
PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxT
dGFja0l0ZW0mIGl0ZW0pCiB7CiAgICAgLy8gTk9URTogTW92aW5nIGZyb20gaXRlbSAtPiB0b2tl
biAtPiBpdGVtIGNvcGllcyB0aGUgQXR0cmlidXRlIHZlY3RvciB0d2ljZSEKLSAgICBBdG9taWNI
VE1MVG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGl0ZW0ubG9jYWxOYW1lKCks
IFZlY3RvcjxBdHRyaWJ1dGU+KGl0ZW0uYXR0cmlidXRlcygpKSk7CisgICAgQXRvbUhUTUxUb2tl
biBmYWtlVG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgaXRlbS5sb2NhbE5hbWUoKSwgVmVjdG9y
PEF0dHJpYnV0ZT4oaXRlbS5hdHRyaWJ1dGVzKCkpKTsKICAgICBBU1NFUlQoaXRlbS5uYW1lc3Bh
Y2VVUkkoKSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKICAgICBBU1NFUlQoaXNG
b3JtYXR0aW5nVGFnKGl0ZW0ubG9jYWxOYW1lKCkpKTsKICAgICByZXR1cm4gSFRNTFN0YWNrSXRl
bTo6Y3JlYXRlKGNyZWF0ZUhUTUxFbGVtZW50KGZha2VUb2tlbiksIFdURk1vdmUoZmFrZVRva2Vu
KSwgaXRlbS5uYW1lc3BhY2VVUkkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaAppbmRleCAxMjc4NTQ5ZDcxYmY3NmJlMWQ0NmQ2MzA5
MDRjYjVlMDY3NjQ3Y2JhLi4wYTAzMThhZTUzMWY0MmQ5MGE1ZjJhNjNlNTRiYjZkNzNlNTMxNzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmgKQEAgLTc5LDcgKzc5LDcgQEAgZW51bSBXaGl0ZXNwYWNlTW9kZSB7CiAgICAgV2hpdGVz
cGFjZVVua25vd24KIH07CiAKLWNsYXNzIEF0b21pY0hUTUxUb2tlbjsKK2NsYXNzIEF0b21IVE1M
VG9rZW47CiBzdHJ1Y3QgQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEVsZW1lbnQ7CkBAIC05OCwyNSArOTgsMjUgQEAgY2xhc3MgSFRNTENvbnN0
cnVjdGlvblNpdGUgewogICAgIHZvaWQgc2V0RGVmYXVsdENvbXBhdGliaWxpdHlNb2RlKCk7CiAg
ICAgdm9pZCBmaW5pc2hlZFBhcnNpbmcoKTsKIAotICAgIHZvaWQgaW5zZXJ0RG9jdHlwZShBdG9t
aWNIVE1MVG9rZW4mJik7Ci0gICAgdm9pZCBpbnNlcnRDb21tZW50KEF0b21pY0hUTUxUb2tlbiYm
KTsKLSAgICB2b2lkIGluc2VydENvbW1lbnRPbkRvY3VtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsK
LSAgICB2b2lkIGluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChBdG9taWNIVE1MVG9rZW4m
Jik7Ci0gICAgdm9pZCBpbnNlcnRIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBpbnNlcnRIVE1M
RWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoQXRvbWljSFRNTFRva2VuJiYpOwor
ICAgIHZvaWQgaW5zZXJ0RG9jdHlwZShBdG9tSFRNTFRva2VuJiYpOworICAgIHZvaWQgaW5zZXJ0
Q29tbWVudChBdG9tSFRNTFRva2VuJiYpOworICAgIHZvaWQgaW5zZXJ0Q29tbWVudE9uRG9jdW1l
bnQoQXRvbUhUTUxUb2tlbiYmKTsKKyAgICB2b2lkIGluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxl
bWVudChBdG9tSFRNTFRva2VuJiYpOworICAgIHZvaWQgaW5zZXJ0SFRNTEVsZW1lbnQoQXRvbUhU
TUxUb2tlbiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE+IGluc2VydEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9t
SFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5zZXJ0Q3VzdG9tRWxlbWVudChSZWY8RWxlbWVudD4m
JiwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBWZWN0b3I8QXR0cmlidXRlPiYmKTsKLSAg
ICB2b2lkIGluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYpOwot
ICAgIHZvaWQgaW5zZXJ0Rm9ybWF0dGluZ0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYpOwotICAg
IHZvaWQgaW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYmKTsKLSAgICB2b2lk
IGluc2VydEhUTUxCb2R5RWxlbWVudChBdG9taWNIVE1MVG9rZW4mJik7Ci0gICAgdm9pZCBpbnNl
cnRIVE1MRm9ybUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIGJvb2wgaXNEZW1vdGVkID0gZmFs
c2UpOwotICAgIHZvaWQgaW5zZXJ0U2NyaXB0RWxlbWVudChBdG9taWNIVE1MVG9rZW4mJik7Cisg
ICAgdm9pZCBpbnNlcnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21IVE1MVG9rZW4mJik7Cisg
ICAgdm9pZCBpbnNlcnRGb3JtYXR0aW5nRWxlbWVudChBdG9tSFRNTFRva2VuJiYpOworICAgIHZv
aWQgaW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21IVE1MVG9rZW4mJik7CisgICAgdm9pZCBpbnNl
cnRIVE1MQm9keUVsZW1lbnQoQXRvbUhUTUxUb2tlbiYmKTsKKyAgICB2b2lkIGluc2VydEhUTUxG
b3JtRWxlbWVudChBdG9tSFRNTFRva2VuJiYsIGJvb2wgaXNEZW1vdGVkID0gZmFsc2UpOworICAg
IHZvaWQgaW5zZXJ0U2NyaXB0RWxlbWVudChBdG9tSFRNTFRva2VuJiYpOwogICAgIHZvaWQgaW5z
ZXJ0VGV4dE5vZGUoU3RyaW5nJiYsIFdoaXRlc3BhY2VNb2RlID0gV2hpdGVzcGFjZVVua25vd24p
OwotICAgIHZvaWQgaW5zZXJ0Rm9yZWlnbkVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSk7CisgICAgdm9pZCBpbnNlcnRGb3JlaWduRWxlbWVu
dChBdG9tSFRNTFRva2VuJiYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAKLSAg
ICB2b2lkIGluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21pY0hUTUxUb2tlbiYm
KTsKLSAgICB2b2lkIGluc2VydEhUTUxIdG1sU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRva2Vu
JiYpOwotICAgIHZvaWQgaW5zZXJ0SFRNTEJvZHlTdGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9r
ZW4mJik7CisgICAgdm9pZCBpbnNlcnRIVE1MSHRtbFN0YXJ0VGFnQmVmb3JlSFRNTChBdG9tSFRN
TFRva2VuJiYpOworICAgIHZvaWQgaW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0luQm9keShBdG9tSFRN
TFRva2VuJiYpOworICAgIHZvaWQgaW5zZXJ0SFRNTEJvZHlTdGFydFRhZ0luQm9keShBdG9tSFRN
TFRva2VuJiYpOwogCiAgICAgdm9pZCByZXBhcmVudChIVE1MRWxlbWVudFN0YWNrOjpFbGVtZW50
UmVjb3JkJiBuZXdQYXJlbnQsIEhUTUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQmIGNoaWxk
KTsKICAgICAvLyBpbnNlcnRBbHJlYWR5UGFyc2VkQ2hpbGQgYXNzdW1lcyB0aGF0IHxjaGlsZHwg
aGFzIGFscmVhZHkgYmVlbiBwYXJzZWQgKGkuZS4sIHdlJ3JlIGp1c3QKQEAgLTE4NiwxMSArMTg2
LDExIEBAIGNsYXNzIEhUTUxDb25zdHJ1Y3Rpb25TaXRlIHsKIAogICAgIHZvaWQgZmluZEZvc3Rl
clNpdGUoSFRNTENvbnN0cnVjdGlvblNpdGVUYXNrJik7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4g
Y3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKEF0b21pY0hUTUxU
b2tlbiYsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSoqKTsKLSAgICBSZWY8RWxlbWVudD4gY3Jl
YXRlSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7Ci0gICAgUmVmPEVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiwgY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJ
KTsKKyAgICBSZWZQdHI8RWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKEF0b21IVE1MVG9rZW4mLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqKik7
CisgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KEF0b21IVE1MVG9rZW4mKTsKKyAg
ICBSZWY8RWxlbWVudD4gY3JlYXRlRWxlbWVudChBdG9tSFRNTFRva2VuJiwgY29uc3QgQXRvbVN0
cmluZyYgbmFtZXNwYWNlVVJJKTsKIAotICAgIHZvaWQgbWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2Vu
SW50b0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiYsIEVsZW1lbnQmKTsKKyAgICB2b2lkIG1lcmdl
QXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KEF0b21IVE1MVG9rZW4mJiwgRWxlbWVudCYp
OwogICAgIHZvaWQgZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGVJZk5lZWRlZCgpOwog
CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBkOWZmMjBkY2Q0ZDlkMWM0NmJkOThl
ZWNjZjM5ZTNjZmRhZmYwNGE0Li40N2FkYTRmOTRlMzc5ZTVjN2Y1MGM2N2U3NTU5OTUwNmQ0OGQx
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKQEAgLTM1MywxMSArMzUzLDExIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpw
dW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogCiB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6Y29uc3RydWN0VHJlZUZyb21IVE1MVG9rZW4oSFRNTFRva2VuaXplcjo6VG9rZW5QdHIm
IHJhd1Rva2VuKQogewotICAgIEF0b21pY0hUTUxUb2tlbiB0b2tlbigqcmF3VG9rZW4pOworICAg
IEF0b21IVE1MVG9rZW4gdG9rZW4oKnJhd1Rva2VuKTsKIAogICAgIC8vIFdlIGNsZWFyIHRoZSBy
YXdUb2tlbiBpbiBjYXNlIGNvbnN0cnVjdFRyZWUKICAgICAvLyBzeW5jaHJvbm91c2x5IHJlLWVu
dGVycyB0aGUgcGFyc2VyLiBXZSBkb24ndCBjbGVhciB0aGUgdG9rZW4gaW1tZWRhdGVseQotICAg
IC8vIGZvciBDaGFyYWN0ZXIgdG9rZW5zIGJlY2F1c2UgdGhlIEF0b21pY0hUTUxUb2tlbiBhdm9p
ZHMgY29weWluZyB0aGUKKyAgICAvLyBmb3IgQ2hhcmFjdGVyIHRva2VucyBiZWNhdXNlIHRoZSBB
dG9tSFRNTFRva2VuIGF2b2lkcyBjb3B5aW5nIHRoZQogICAgIC8vIGNoYXJhY3RlcnMgYnkga2Vl
cGluZyBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgYnVmZmVyIGluIHRoZQogICAgIC8vIEhU
TUxUb2tlbi4gRm9ydHVuYXRlbHksIENoYXJhY3RlciB0b2tlbnMgY2FuJ3QgY2F1c2UgdXMgdG8g
cmUtZW50ZXIKICAgICAvLyB0aGUgcGFyc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFN0YWNrSXRlbS5oCmluZGV4IGEzNjMxNTIwYTdkMzE2MzdjYWI3NjI0NTQ3MjE0ZTgxYjlm
MTk1ODIuLjI4MjFiMmZjMjNhYjlmZjk2MTdmY2U3MzQzM2RmNDhmYjYwZDg4MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKQEAgLTI2LDcgKzI2LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBdG9taWNIVE1MVG9rZW4uaCIKKyNpbmNsdWRl
ICJBdG9tSFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTFN0YWNrSXRlbSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEhUTUxTdGFja0l0ZW0+IHsKIHB1YmxpYzoKICAgICAvLyBOb3JtYWwgSFRNTEVsZW1lbnRT
dGFjayBhbmQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdCBpdGVtcy4KLSAgICBzdGF0aWMgUmVm
PEhUTUxTdGFja0l0ZW0+IGNyZWF0ZShSZWY8RWxlbWVudD4mJiwgQXRvbWljSFRNTFRva2VuJiYs
IGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSA9IEhUTUxOYW1lczo6eGh0bWxOYW1lc3Bh
Y2VVUkkpOworICAgIHN0YXRpYyBSZWY8SFRNTFN0YWNrSXRlbT4gY3JlYXRlKFJlZjxFbGVtZW50
PiYmLCBBdG9tSFRNTFRva2VuJiYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSA9IEhU
TUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOwogICAgIHN0YXRpYyBSZWY8SFRNTFN0YWNrSXRl
bT4gY3JlYXRlKFJlZjxFbGVtZW50PiYmLCBjb25zdCBBdG9tU3RyaW5nJiwgVmVjdG9yPEF0dHJp
YnV0ZT4mJik7CiAKICAgICAvLyBEb2N1bWVudCBmcmFnbWVudCBvciBlbGVtZW50IGZvciBwYXJz
aW5nIGNvbnRleHQuCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEhUTUxTdGFja0l0ZW0gOiBwdWJs
aWMgUmVmQ291bnRlZDxIVE1MU3RhY2tJdGVtPiB7CiAgICAgYm9vbCBtYXRjaGVzSFRNTFRhZyhj
b25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgSFRNTFN0YWNrSXRlbShS
ZWY8RWxlbWVudD4mJiwgQXRvbWljSFRNTFRva2VuJiYsIGNvbnN0IEF0b21TdHJpbmcmIG5hbWVz
cGFjZVVSSSk7CisgICAgSFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiwgQXRvbUhUTUxUb2tl
biYmLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgIEhUTUxTdGFja0l0ZW0o
UmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgbmFtZXNwYWNlVVJJLCBWZWN0b3I8QXR0cmlidXRlPiYmKTsKICAgICBleHBsaWNpdCBI
VE1MU3RhY2tJdGVtKEVsZW1lbnQmKTsKICAgICBleHBsaWNpdCBIVE1MU3RhY2tJdGVtKERvY3Vt
ZW50RnJhZ21lbnQmKTsKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBpc0luSFRNTE5hbWVzcGFjZShj
b25zdCBIVE1MU3RhY2tJdGVtJik7CiBib29sIGlzTnVtYmVyZWRIZWFkZXJFbGVtZW50KGNvbnN0
IEhUTUxTdGFja0l0ZW0mKTsKIGJvb2wgaXNTcGVjaWFsTm9kZShjb25zdCBIVE1MU3RhY2tJdGVt
Jik7CiAKLWlubGluZSBIVE1MU3RhY2tJdGVtOjpIVE1MU3RhY2tJdGVtKFJlZjxFbGVtZW50PiYm
IGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYmIHRva2VuLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
c3BhY2VVUkkgPSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQoraW5saW5lIEhUTUxTdGFj
a0l0ZW06OkhUTUxTdGFja0l0ZW0oUmVmPEVsZW1lbnQ+JiYgZWxlbWVudCwgQXRvbUhUTUxUb2tl
biYmIHRva2VuLCBjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBIVE1MTmFtZXM6Onho
dG1sTmFtZXNwYWNlVVJJKQogICAgIDogbV9ub2RlKFdURk1vdmUoZWxlbWVudCkpCiAgICAgLCBt
X25hbWVzcGFjZVVSSShuYW1lc3BhY2VVUkkpCiAgICAgLCBtX2xvY2FsTmFtZSh0b2tlbi5uYW1l
KCkpCkBAIC04NCw3ICs4NCw3IEBAIGlubGluZSBIVE1MU3RhY2tJdGVtOjpIVE1MU3RhY2tJdGVt
KFJlZjxFbGVtZW50PiYmIGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYmIHRvCiB7CiB9CiAKLWlu
bGluZSBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKFJlZjxFbGVtZW50
PiYmIGVsZW1lbnQsIEF0b21pY0hUTUxUb2tlbiYmIHRva2VuLCBjb25zdCBBdG9tU3RyaW5nJiBu
YW1lc3BhY2VVUkkpCitpbmxpbmUgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxTdGFja0l0ZW06OmNy
ZWF0ZShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBBdG9tSFRNTFRva2VuJiYgdG9rZW4sIGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VE1MU3RhY2tJdGVtKFdURk1vdmUoZWxlbWVudCksIFdURk1vdmUodG9rZW4pLCBuYW1lc3BhY2VV
UkkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IDc1NWY4ZDQ5NWUxOTUzNjU2NzRiMjA4NzQ5ZjQyNDVlNmUwM2EzYjguLjYyYjgx
Mzk3YWNjOTdhYWUxODdjOGVmZDhkNmRmNGMzODkyMjkxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIGJv
b2wgSFRNTENvbnN0cnVjdGlvblNpdGU6OmlzRm9ybWF0dGluZ1RhZyhjb25zdCBBdG9tU3RyaW5n
JiB0YWdOYW1lKQogCiBjbGFzcyBIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9r
ZW5CdWZmZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5C
dWZmZXIoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKKyAgICBleHBsaWNpdCBFeHRlcm5hbENoYXJh
Y3RlclRva2VuQnVmZmVyKEF0b21IVE1MVG9rZW4mIHRva2VuKQogICAgICAgICA6IG1fdGV4dCh0
b2tlbi5jaGFyYWN0ZXJzKCksIHRva2VuLmNoYXJhY3RlcnNMZW5ndGgoKSkKICAgICAgICAgLCBt
X2lzQWxsOEJpdERhdGEodG9rZW4uY2hhcmFjdGVyc0lzQWxsOEJpdERhdGEoKSkKICAgICB7CkBA
IC0zMzMsNyArMzMzLDcgQEAgUmVmUHRyPFNjcmlwdEVsZW1lbnQ+IEhUTUxUcmVlQnVpbGRlcjo6
dGFrZVNjcmlwdFRvUHJvY2VzcyhUZXh0UG9zaXRpb24mIHNjcmlwdFMKICAgICByZXR1cm4gV1RG
TW92ZShtX3NjcmlwdFRvUHJvY2Vzcyk7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjb25z
dHJ1Y3RUcmVlKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OmNvbnN0cnVjdFRyZWUoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgQVNTRVJUKCFtX2Rlc3Ryb3llZCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAg
ICAgLy8gVGhlIHRyZWUgYnVpbGRlciBtaWdodCBoYXZlIGJlZW4gZGVzdHJveWVkIGFzIGFuIGlu
ZGlyZWN0IHJlc3VsdCBvZiBleGVjdXRpbmcgdGhlIHF1ZXVlZCB0YXNrcy4KIH0KIAotdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbihBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3Zv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW4oQXRvbUhUTUxUb2tlbiYmIHRva2VuKQog
ewogICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CiAgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5p
dGlhbGl6ZWQ6CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NUb2tlbihBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICB9CiB9CiAKLXZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQor
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbUhUTUxUb2tlbiYm
IHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpET0NUWVBF
KTsKICAgICBpZiAobV9pbnNlcnRpb25Nb2RlID09IEluc2VydGlvbk1vZGU6OkluaXRpYWwpIHsK
QEAgLTQxMywxMyArNDEzLDEzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRG9jdHlw
ZVRva2VuKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NGYWtlU3RhcnRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgVmVjdG9yPEF0
dHJpYnV0ZT4mJiBhdHRyaWJ1dGVzKQogewogICAgIC8vIEZJWE1FOiBXZSdsbCBuZWVkIGEgZmFu
Y2llciBjb252ZXJzaW9uIHRoYW4ganVzdCAibG9jYWxOYW1lIiBmb3IgU1ZHL01hdGhNTCB0YWdz
LgotICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgdGFn
TmFtZS5sb2NhbE5hbWUoKSwgV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAgQXRvbUhUTUxUb2tl
biBmYWtlVG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgdGFnTmFtZS5sb2NhbE5hbWUoKSwgV1RG
TW92ZShhdHRyaWJ1dGVzKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKFdURk1vdmUoZmFrZVRva2Vu
KSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBB
dG9tU3RyaW5nJiB0YWdOYW1lKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlVG9rZW4oSFRN
TFRva2VuOjpFbmRUYWcsIHRhZ05hbWUpOworICAgIEF0b21IVE1MVG9rZW4gZmFrZVRva2VuKEhU
TUxUb2tlbjo6RW5kVGFnLCB0YWdOYW1lKTsKICAgICBwcm9jZXNzRW5kVGFnKFdURk1vdmUoZmFr
ZVRva2VuKSk7CiB9CiAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpCiB7CiAgICAgaWYgKCFtX3RyZWUu
b3BlbkVsZW1lbnRzKCkuaW5CdXR0b25TY29wZShwVGFnLT5sb2NhbE5hbWUoKSkpCiAgICAgICAg
IHJldHVybjsKLSAgICBBdG9taWNIVE1MVG9rZW4gZW5kUChIVE1MVG9rZW46OkVuZFRhZywgcFRh
Zy0+bG9jYWxOYW1lKCkpOworICAgIEF0b21IVE1MVG9rZW4gZW5kUChIVE1MVG9rZW46OkVuZFRh
ZywgcFRhZy0+bG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShlbmRQKSk7
CiB9CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBib29sIGlzRGRPckR0KGNvbnN0IEhUTUxTdGFja0l0
ZW0mIGl0ZW0pCiAKIH0KIAotdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ2xvc2UoY29uc3QgSFRNTFN0
YWNrSXRlbSYpPiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Nsb3NlV2hlbk5lc3RlZFRh
ZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3RlbXBsYXRlIDxib29sIHNob3VsZENsb3NlKGNv
bnN0IEhUTUxTdGFja0l0ZW0mKT4gdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDbG9zZVdo
ZW5OZXN0ZWRUYWcoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIG1fZnJhbWVzZXRPayA9
IGZhbHNlOwogICAgIGZvciAoYXV0byogbm9kZVJlY29yZCA9ICZtX3RyZWUub3BlbkVsZW1lbnRz
KCkudG9wUmVjb3JkKCk7IDsgbm9kZVJlY29yZCA9IG5vZGVSZWNvcmQtPm5leHQoKSkgewpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUYWJsZVF1YWxpZmllZE5hbWU+IHN0
YXRpYyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhCiAgICAgcmV0dXJuIG1hcDsK
IH0KIAotc3RhdGljIHZvaWQgYWRqdXN0U1ZHVGFnTmFtZUNhc2UoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKK3N0YXRpYyB2b2lkIGFkanVzdFNWR1RhZ05hbWVDYXNlKEF0b21IVE1MVG9rZW4mIHRv
a2VuKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVkTmFtZT4+IG1hcCA9IGNyZWF0
ZUNhc2VNYXAoU1ZHTmFtZXM6OmdldFNWR1RhZ3MoKSwgU1ZHTmFtZXM6OlNWR1RhZ3NDb3VudCk7
CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgY2FzZWROYW1lID0gbWFwLmdldCgpLmdldCh0b2tl
bi5uYW1lKCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkIGFkanVzdFNWR1RhZ05h
bWVDYXNlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgdG9rZW4uc2V0TmFtZShjYXNlZE5h
bWUubG9jYWxOYW1lKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRqdXN0QXR0cmlidXRl
cyhjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmlu
ZywgUXVhbGlmaWVkTmFtZT4mIG1hcCwgQXRvbWljSFRNTFRva2VuJiB0b2tlbikKK3N0YXRpYyBp
bmxpbmUgdm9pZCBhZGp1c3RBdHRyaWJ1dGVzKGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiYgbWFwLCBBdG9tSFRN
TFRva2VuJiB0b2tlbikKIHsKICAgICBmb3IgKGF1dG8mIGF0dHJpYnV0ZSA6IHRva2VuLmF0dHJp
YnV0ZXMoKSkgewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBjYXNlZE5hbWUgPSBtYXAu
Z2V0KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKSk7CkBAIC00OTksMTggKzQ5OSwxOCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgYWRqdXN0QXR0cmlidXRlcyhjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hNYQogICAgIH0KIH0KIAotdGVtcGxhdGU8Y29uc3QgUXVhbGlmaWVkTmFt
ZSogY29uc3QqIGF0dHJpYnV0ZXNUYWJsZSgpLCB1bnNpZ25lZCBhdHRyaWJ1dGVzVGFibGVMZW5n
dGg+IHN0YXRpYyB2b2lkIGFkanVzdEF0dHJpYnV0ZXMoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
K3RlbXBsYXRlPGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0KiBhdHRyaWJ1dGVzVGFibGUoKSwg
dW5zaWduZWQgYXR0cmlidXRlc1RhYmxlTGVuZ3RoPiBzdGF0aWMgdm9pZCBhZGp1c3RBdHRyaWJ1
dGVzKEF0b21IVE1MVG9rZW4mIHRva2VuKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlm
aWVkTmFtZT4+IG1hcCA9IGNyZWF0ZUNhc2VNYXAoYXR0cmlidXRlc1RhYmxlKCksIGF0dHJpYnV0
ZXNUYWJsZUxlbmd0aCk7CiAgICAgYWRqdXN0QXR0cmlidXRlcyhtYXAsIHRva2VuKTsKIH0KIAot
c3RhdGljIGlubGluZSB2b2lkIGFkanVzdFNWR0F0dHJpYnV0ZXMoQXRvbWljSFRNTFRva2VuJiB0
b2tlbikKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RTVkdBdHRyaWJ1dGVzKEF0b21IVE1MVG9r
ZW4mIHRva2VuKQogewogICAgIGFkanVzdEF0dHJpYnV0ZXM8U1ZHTmFtZXM6OmdldFNWR0F0dHJz
LCBTVkdOYW1lczo6U1ZHQXR0cnNDb3VudD4odG9rZW4pOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQgYWRqdXN0TWF0aE1MQXR0cmlidXRlcyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQorc3RhdGlj
IGlubGluZSB2b2lkIGFkanVzdE1hdGhNTEF0dHJpYnV0ZXMoQXRvbUhUTUxUb2tlbiYgdG9rZW4p
CiB7CiAgICAgYWRqdXN0QXR0cmlidXRlczxNYXRoTUxOYW1lczo6Z2V0TWF0aE1MQXR0cnMsIE1h
dGhNTE5hbWVzOjpNYXRoTUxBdHRyc0NvdW50Pih0b2tlbik7CiB9CkBAIC01MzcsMTMgKzUzNywx
MyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21T
dHJpbmcsIFF1YWxpZmllZE5hbWU+IGNyZWF0ZQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRp
YyB2b2lkIGFkanVzdEZvcmVpZ25BdHRyaWJ1dGVzKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCitz
dGF0aWMgdm9pZCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcyhBdG9tSFRNTFRva2VuJiB0b2tlbikK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+PiBtYXAgPSBjcmVhdGVGb3Jl
aWduQXR0cmlidXRlc01hcCgpOwogICAgIGFkanVzdEF0dHJpYnV0ZXMobWFwLCB0b2tlbik7CiB9
CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWlj
SFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFn
Rm9ySW5Cb2R5KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlw
ZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaHRt
bFRhZykgewpAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAgICAgfQogICAgIGlm
ICh0b2tlbi5uYW1lKCkgPT0gb3B0Z3JvdXBUYWcgfHwgdG9rZW4ubmFtZSgpID09IG9wdGlvblRh
ZykgewogICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3Rh
Y2tJdGVtKCkubm9kZSgpKSkgewotICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGlv
bihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLT5sb2NhbE5hbWUoKSk7CisgICAgICAgICAg
ICBBdG9tSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46OkVuZFRhZywgb3B0aW9uVGFnLT5s
b2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKFdURk1vdmUoZW5kT3B0aW9u
KSk7CiAgICAgICAgIH0KICAgICAgICAgbV90cmVlLnJlY29uc3RydWN0VGhlQWN0aXZlRm9ybWF0
dGluZ0VsZW1lbnRzKCk7CkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBp
bnNlcnRHZW5lcmljSFRNTEVsZW1lbnQoV1RGTW92ZSh0b2tlbikpOwogfQogCi1pbmxpbmUgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEdlbmVyaWNIVE1MRWxlbWVudChBdG9taWNIVE1MVG9r
ZW4mJiB0b2tlbikKK2lubGluZSB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0R2VuZXJpY0hU
TUxFbGVtZW50KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBtX2N1c3RvbUVsZW1lbnRU
b0NvbnN0cnVjdCA9IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UoV1RGTW92ZSh0b2tlbikpOwogfQpAQCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpkaWRDcmVhdGVDdXN0b21PckZhbGxiYWNrRWxlbWVudChSZWY8RWxlbWVu
dD4mJiBlbGVtZW50LCBDCiAgICAgbV90cmVlLmluc2VydEN1c3RvbUVsZW1lbnQoV1RGTW92ZShl
bGVtZW50KSwgZGF0YS5uYW1lLCBXVEZNb3ZlKGRhdGEuYXR0cmlidXRlcykpOwogfQogCi12b2lk
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RlbXBsYXRlU3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
JiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RlbXBsYXRlU3RhcnRUYWco
QXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIG1fdHJlZS5hY3RpdmVGb3JtYXR0aW5nRWxl
bWVudHMoKS5hcHBlbmRNYXJrZXIoKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoV1RG
TW92ZSh0b2tlbikpOwpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzVGVtcGxhdGVTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBtX2lu
c2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlOjpUZW1wbGF0ZUNvbnRlbnRzOwogfQogCi1ib29s
IEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1RlbXBsYXRlRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYm
IHRva2VuKQorYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUZW1wbGF0ZUVuZFRhZyhBdG9t
SFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLm5hbWUoKSA9PSB0ZW1wbGF0
ZVRhZy0+bG9jYWxOYW1lKCkpOwogICAgIGlmICghbV90cmVlLm9wZW5FbGVtZW50cygpLmhhc1Rl
bXBsYXRlSW5IVE1MU2NvcGUoKSkgewpAQCAtODk0LDkgKzg5NCw5IEBAIGJvb2wgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzVGVtcGxhdGVFbmRUYWcoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kT2ZG
aWxlRm9ySW5UZW1wbGF0ZUNvbnRlbnRzKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQorYm9vbCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRPZkZpbGVGb3JJblRlbXBsYXRlQ29udGVudHMoQXRv
bUhUTUxUb2tlbiYmIHRva2VuKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBlbmRUZW1wbGF0ZShI
VE1MVG9rZW46OkVuZFRhZywgdGVtcGxhdGVUYWctPmxvY2FsTmFtZSgpKTsKKyAgICBBdG9tSFRN
TFRva2VuIGVuZFRlbXBsYXRlKEhUTUxUb2tlbjo6RW5kVGFnLCB0ZW1wbGF0ZVRhZy0+bG9jYWxO
YW1lKCkpOwogICAgIGlmICghcHJvY2Vzc1RlbXBsYXRlRW5kVGFnKFdURk1vdmUoZW5kVGVtcGxh
dGUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmNsb3NlVGhlQ2VsbCgpCiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uTW9k
ZSA9PSBJbnNlcnRpb25Nb2RlOjpJblJvdyk7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbUhUTUxUb2tlbiYm
IHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
Zyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBjYXB0aW9uVGFnKSB7CkBAIC0xMDA1LDcgKzEw
MDUsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5UYWJsZShB
dG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoV1RG
TW92ZSh0b2tlbikpOwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFn
KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NT
dGFydFRhZyhBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBzd2l0Y2ggKG1faW5zZXJ0aW9uTW9kZSkg
ewpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFy
dFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICAgICAgICAgIHx8IHRva2VuLm5hbWUo
KSA9PSB0clRhZwogICAgICAgICAgICAgfHwgaXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLm5h
bWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwotICAgICAgICAgICAgQXRv
bWljSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLT5sb2Nh
bE5hbWUoKSk7CisgICAgICAgICAgICBBdG9tSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46
OkVuZFRhZywgc2VsZWN0VGFnLT5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5k
VGFnKFdURk1vdmUoZW5kU2VsZWN0KSk7CiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcoV1RG
TW92ZSh0b2tlbikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI3MCw3ICsxMjcwLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0
b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGlvblRhZykg
ewogICAgICAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihtX3RyZWUuY3VycmVudFN0
YWNrSXRlbSgpLm5vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5k
T3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRpb25UYWctPmxvY2FsTmFtZSgpKTsKKyAgICAg
ICAgICAgICAgICBBdG9tSFRNTFRva2VuIGVuZE9wdGlvbihIVE1MVG9rZW46OkVuZFRhZywgb3B0
aW9uVGFnLT5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhXVEZN
b3ZlKGVuZE9wdGlvbikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV90cmVlLmluc2Vy
dEhUTUxFbGVtZW50KFdURk1vdmUodG9rZW4pKTsKQEAgLTEyNzgsMTEgKzEyNzgsMTEgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tl
bikKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IG9wdGdyb3VwVGFnKSB7
CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG1fdHJlZS5jdXJyZW50U3Rh
Y2tJdGVtKCkubm9kZSgpKSkgewotICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tlbiBlbmRP
cHRpb24oSFRNTFRva2VuOjpFbmRUYWcsIG9wdGlvblRhZy0+bG9jYWxOYW1lKCkpOworICAgICAg
ICAgICAgICAgIEF0b21IVE1MVG9rZW4gZW5kT3B0aW9uKEhUTUxUb2tlbjo6RW5kVGFnLCBvcHRp
b25UYWctPmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKFdURk1v
dmUoZW5kT3B0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaXM8SFRNTE9w
dEdyb3VwRWxlbWVudD4obV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS5ub2RlKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgQXRvbWljSFRNTFRva2VuIGVuZE9wdGdyb3VwKEhUTUxUb2tlbjo6RW5kVGFn
LCBvcHRncm91cFRhZy0+bG9jYWxOYW1lKCkpOworICAgICAgICAgICAgICAgIEF0b21IVE1MVG9r
ZW4gZW5kT3B0Z3JvdXAoSFRNTFRva2VuOjpFbmRUYWcsIG9wdGdyb3VwVGFnLT5sb2NhbE5hbWUo
KSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhXVEZNb3ZlKGVuZE9wdGdyb3VwKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoV1RG
TW92ZSh0b2tlbikpOwpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICAgICAgfQogICAg
ICAgICBpZiAodG9rZW4ubmFtZSgpID09IHNlbGVjdFRhZykgewogICAgICAgICAgICAgcGFyc2VF
cnJvcih0b2tlbik7Ci0gICAgICAgICAgICBBdG9taWNIVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxU
b2tlbjo6RW5kVGFnLCBzZWxlY3RUYWctPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIEF0b21I
VE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlbjo6RW5kVGFnLCBzZWxlY3RUYWctPmxvY2FsTmFt
ZSgpKTsKICAgICAgICAgICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShlbmRTZWxlY3QpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikK
ICAgICAgICAgICAgICAgICBBU1NFUlQoaXNQYXJzaW5nRnJhZ21lbnQoKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgQXRvbWljSFRNTFRva2Vu
IGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2VsZWN0VGFnLT5sb2NhbE5hbWUoKSk7Cisg
ICAgICAgICAgICBBdG9tSFRNTFRva2VuIGVuZFNlbGVjdChIVE1MVG9rZW46OkVuZFRhZywgc2Vs
ZWN0VGFnLT5sb2NhbE5hbWUoKSk7CiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKFdURk1vdmUo
ZW5kU2VsZWN0KSk7CiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcoV1RGTW92ZSh0b2tlbikp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICB9
CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5
KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NI
dG1sU3RhcnRUYWdGb3JJbkJvZHkoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIHBhcnNl
RXJyb3IodG9rZW4pOwogICAgIGlmIChtX3RyZWUub3BlbkVsZW1lbnRzKCkuaGFzVGVtcGxhdGVJ
bkhUTUxTY29wZSgpKSB7CkBAIC0xMzY4LDcgKzEzNjgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0h0bWxTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikK
ICAgICBtX3RyZWUuaW5zZXJ0SFRNTEh0bWxTdGFydFRhZ0luQm9keShXVEZNb3ZlKHRva2VuKSk7
CiB9CiAKLWJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShB
dG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK2Jvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQm9k
eUVuZFRhZ0ZvckluQm9keShBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgQVNTRVJUKHRva2VuLm5hbWUo
KSA9PSBib2R5VGFnKTsKQEAgLTEzODEsNyArMTM4MSw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzQm9keUVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhl
ckVuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3ZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkoQXRvbUhUTUxUb2tlbiYmIHRv
a2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwog
ICAgIGZvciAoYXV0byogcmVjb3JkID0gJm1fdHJlZS5vcGVuRWxlbWVudHMoKS50b3BSZWNvcmQo
KTsgOyByZWNvcmQgPSByZWNvcmQtPm5leHQoKSkgewpAQCAtMTQwMSw3ICsxNDAxLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NBbnlPdGhlckVuZFRhZ0ZvckluQm9keShBdG9taWNI
VE1MVG9rZW4mJiB0b2tlbikKIH0KIAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjcGFyc2luZy1t
YWluLWluYm9keQotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNhbGxUaGVBZG9wdGlvbkFnZW5jeShB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNhbGxUaGVBZG9w
dGlvbkFnZW5jeShBdG9tSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICAvLyBUaGUgYWRvcHRpb24g
YWdlbmN5IGFsZ29yaXRobSBpcyBOXjIuIFdlIGxpbWl0IHRoZSBudW1iZXIgb2YgaXRlcmF0aW9u
cwogICAgIC8vIHRvIHN0b3AgZnJvbSBoYW5naW5nIHRoZSB3aG9sZSBicm93c2VyLiBUaGlzIGxp
bWl0IGlzIHNwZWNpZmllZCBpbiB0aGUKQEAgLTE1ODMsNyArMTU4Myw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCkKICAgICB9CiB9CiAK
LXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWlj
SFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0Zv
ckluVGFibGVCb2R5KEF0b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6RW5kVGFnKTsKICAgICBpZiAoaXNUYWJsZUJvZHlDb250ZXh0
VGFnKHRva2VuLm5hbWUoKSkpIHsKQEAgLTE2MjAsNyArMTYyMCw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuJiYgdG9r
ZW4pCiAgICAgcHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoV1RGTW92ZSh0b2tlbikpOwogfQogCi12
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0b21pY0hUTUxUb2tl
biYmIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJvdyhB
dG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1M
VG9rZW46OkVuZFRhZyk7CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSB0clRhZykgewpAQCAtMTY1
Niw3ICsxNjU2LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJblJv
dyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZShX
VEZNb3ZlKHRva2VuKSk7CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFn
Rm9ySW5DZWxsKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFT
U0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmIChpc1RhYmxl
Q2VsbENvbnRleHRUYWcodG9rZW4ubmFtZSgpKSkgewpAQCAtMTY5Myw3ICsxNjkzLDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbWljSFRNTFRva2Vu
JiYgdG9rZW4pCiAgICAgcHJvY2Vzc0VuZFRhZ0ZvckluQm9keShXVEZNb3ZlKHRva2VuKSk7CiB9
CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hU
TUxUb2tlbiYmIHRva2VuKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWdGb3JJ
bkJvZHkoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gYm9keVRhZykg
ewpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRU
YWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7Ci0gICAgICAgIEF0b21pY0hU
TUxUb2tlbiBlbmRCb2R5KEhUTUxUb2tlbjo6RW5kVGFnLCBib2R5VGFnLT5sb2NhbE5hbWUoKSk7
CisgICAgICAgIEF0b21IVE1MVG9rZW4gZW5kQm9keShIVE1MVG9rZW46OkVuZFRhZywgYm9keVRh
Zy0+bG9jYWxOYW1lKCkpOwogICAgICAgICBpZiAocHJvY2Vzc0JvZHlFbmRUYWdGb3JJbkJvZHko
V1RGTW92ZShlbmRCb2R5KSkpCiAgICAgICAgICAgICBwcm9jZXNzRW5kVGFnKFdURk1vdmUodG9r
ZW4pKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg3OSw3ICsxODc5LDcgQEAgYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NUYWJsZUVuZFRhZ0ZvckluVGFibGUoKQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZ0ZvckluVGFibGUoQXRv
bWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRh
Z0ZvckluVGFibGUoQXRvbUhUTUxUb2tlbiYmIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50
eXBlKCkgPT0gSFRNTFRva2VuOjpFbmRUYWcpOwogICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gdGFi
bGVUYWcpIHsKQEAgLTE5MDEsNyArMTkwMSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzRW5kVGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAgICBwcm9jZXNz
RW5kVGFnRm9ySW5Cb2R5KFdURk1vdmUodG9rZW4pKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNT
RVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZFRhZyk7CiAgICAgc3dpdGNoIChtX2lu
c2VydGlvbk1vZGUpIHsKQEAgLTIwOTYsNyArMjA5Niw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQogICAgICAgICAgICAgfHwg
aXNUYWJsZUNlbGxDb250ZXh0VGFnKHRva2VuLm5hbWUoKSkpIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IodG9rZW4pOwogICAgICAgICAgICAgaWYgKG1fdHJlZS5vcGVuRWxlbWVudHMoKS5pblRh
YmxlU2NvcGUodG9rZW4ubmFtZSgpKSkgewotICAgICAgICAgICAgICAgIEF0b21pY0hUTUxUb2tl
biBlbmRTZWxlY3QoSFRNTFRva2VuOjpFbmRUYWcsIHNlbGVjdFRhZy0+bG9jYWxOYW1lKCkpOwor
ICAgICAgICAgICAgICAgIEF0b21IVE1MVG9rZW4gZW5kU2VsZWN0KEhUTUxUb2tlbjo6RW5kVGFn
LCBzZWxlY3RUYWctPmxvY2FsTmFtZSgpKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzRW5kVGFn
KFdURk1vdmUoZW5kU2VsZWN0KSk7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc0VuZFRhZyhXVEZN
b3ZlKHRva2VuKSk7CiAgICAgICAgICAgICB9CkBAIC0yMTUxLDcgKzIxNTEsNyBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKICAg
ICB9CiB9CiAKLXZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9taWNIVE1M
VG9rZW4mJiB0b2tlbikKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ29tbWVudChBdG9t
SFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OkNvbW1lbnQpOwogICAgIGlmIChtX2luc2VydGlvbk1vZGUgPT0gSW5zZXJ0aW9uTW9kZTo6
SW5pdGlhbApAQCAtMjE3Myw3ICsyMTczLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NDb21tZW50KEF0b21pY0hUTUxUb2tlbiYmIHRva2VuKQogICAgIG1fdHJlZS5pbnNlcnRDb21t
ZW50KFdURk1vdmUodG9rZW4pKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
aGFyYWN0ZXIoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0NoYXJhY3RlcihBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRv
a2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7CiAgICAgRXh0ZXJuYWxDaGFyYWN0
ZXJUb2tlbkJ1ZmZlciBidWZmZXIodG9rZW4pOwpAQCAtMjE5MCw4ICsyMTkwLDggQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhTdHJpbmcmJiBzdHJpbmcpCiAg
ICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIsIG1ha2VT
dHJpbmcoInRlbDoiX3MsIHN0cmluZykpKTsKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGFUYWdM
b2NhbE5hbWUgPSBhVGFnLT5sb2NhbE5hbWUoKTsKLSAgICBBdG9taWNIVE1MVG9rZW4gYVN0YXJ0
VG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgYVRhZ0xvY2FsTmFtZSwgV1RGTW92ZShhdHRyaWJ1
dGVzKSk7Ci0gICAgQXRvbWljSFRNTFRva2VuIGFFbmRUb2tlbihIVE1MVG9rZW46OkVuZFRhZywg
YVRhZ0xvY2FsTmFtZSk7CisgICAgQXRvbUhUTUxUb2tlbiBhU3RhcnRUb2tlbihIVE1MVG9rZW46
OlN0YXJ0VGFnLCBhVGFnTG9jYWxOYW1lLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBBdG9t
SFRNTFRva2VuIGFFbmRUb2tlbihIVE1MVG9rZW46OkVuZFRhZywgYVRhZ0xvY2FsTmFtZSk7CiAK
ICAgICBwcm9jZXNzU3RhcnRUYWcoV1RGTW92ZShhU3RhcnRUb2tlbikpOwogICAgIG1fdHJlZS5l
eGVjdXRlUXVldWVkVGFza3MoKTsKQEAgLTI0MzIsNyArMjQzMiw3IEBAIHZvaWQgSFRNTFRyZWVC
dWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyRm9ySW5Cb2R5KEV4dGVybmFsQ2hhcmFjdGVy
VG9rZW5CdWZmCiAjZW5kaWYKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRP
ZkZpbGUoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0VuZE9mRmlsZShBdG9tSFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2Vu
LnR5cGUoKSA9PSBIVE1MVG9rZW46OkVuZE9mRmlsZSk7CiAgICAgc3dpdGNoIChtX2luc2VydGlv
bk1vZGUpIHsKQEAgLTI1MjgsMzIgKzI1MjgsMzIgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRl
ZmF1bHRGb3JJbml0aWFsKCkKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZv
cmVIVE1MKCkKIHsKLSAgICBBdG9taWNIVE1MVG9rZW4gc3RhcnRIVE1MKEhUTUxUb2tlbjo6U3Rh
cnRUYWcsIGh0bWxUYWctPmxvY2FsTmFtZSgpKTsKKyAgICBBdG9tSFRNTFRva2VuIHN0YXJ0SFRN
TChIVE1MVG9rZW46OlN0YXJ0VGFnLCBodG1sVGFnLT5sb2NhbE5hbWUoKSk7CiAgICAgbV90cmVl
Lmluc2VydEhUTUxIdG1sU3RhcnRUYWdCZWZvcmVIVE1MKFdURk1vdmUoc3RhcnRIVE1MKSk7CiAg
ICAgbV9pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6QmVmb3JlSGVhZDsKIH0KIAogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OmRlZmF1bHRGb3JCZWZvcmVIZWFkKCkKIHsKLSAgICBBdG9taWNI
VE1MVG9rZW4gc3RhcnRIZWFkKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGhlYWRUYWctPmxvY2FsTmFt
ZSgpKTsKKyAgICBBdG9tSFRNTFRva2VuIHN0YXJ0SGVhZChIVE1MVG9rZW46OlN0YXJ0VGFnLCBo
ZWFkVGFnLT5sb2NhbE5hbWUoKSk7CiAgICAgcHJvY2Vzc1N0YXJ0VGFnKFdURk1vdmUoc3RhcnRI
ZWFkKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkKCkKIHsK
LSAgICBBdG9taWNIVE1MVG9rZW4gZW5kSGVhZChIVE1MVG9rZW46OkVuZFRhZywgaGVhZFRhZy0+
bG9jYWxOYW1lKCkpOworICAgIEF0b21IVE1MVG9rZW4gZW5kSGVhZChIVE1MVG9rZW46OkVuZFRh
ZywgaGVhZFRhZy0+bG9jYWxOYW1lKCkpOwogICAgIHByb2Nlc3NFbmRUYWcoV1RGTW92ZShlbmRI
ZWFkKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkZWZhdWx0Rm9ySW5IZWFkTm9zY3Jp
cHQoKQogewotICAgIEF0b21pY0hUTUxUb2tlbiBlbmROb3NjcmlwdChIVE1MVG9rZW46OkVuZFRh
Zywgbm9zY3JpcHRUYWctPmxvY2FsTmFtZSgpKTsKKyAgICBBdG9tSFRNTFRva2VuIGVuZE5vc2Ny
aXB0KEhUTUxUb2tlbjo6RW5kVGFnLCBub3NjcmlwdFRhZy0+bG9jYWxOYW1lKCkpOwogICAgIHBy
b2Nlc3NFbmRUYWcoV1RGTW92ZShlbmROb3NjcmlwdCkpOwogfQogCiB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6ZGVmYXVsdEZvckFmdGVySGVhZCgpCiB7Ci0gICAgQXRvbWljSFRNTFRva2VuIHN0YXJ0
Qm9keShIVE1MVG9rZW46OlN0YXJ0VGFnLCBib2R5VGFnLT5sb2NhbE5hbWUoKSk7CisgICAgQXRv
bUhUTUxUb2tlbiBzdGFydEJvZHkoSFRNTFRva2VuOjpTdGFydFRhZywgYm9keVRhZy0+bG9jYWxO
YW1lKCkpOwogICAgIHByb2Nlc3NTdGFydFRhZyhXVEZNb3ZlKHN0YXJ0Qm9keSkpOwogICAgIG1f
ZnJhbWVzZXRPayA9IHRydWU7CiB9CkBAIC0yNTc1LDcgKzI1NzUsNyBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6ZGVmYXVsdEZvckluVGFibGVUZXh0KCkKICAgICBtX2luc2VydGlvbk1vZGUgPSBt
X29yaWdpbmFsSW5zZXJ0aW9uTW9kZTsKIH0KIAotYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTdGFydFRhZ0ZvckluSGVhZChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK2Jvb2wgSFRNTFRy
ZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbUhUTUxUb2tlbiYmIHRva2Vu
KQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAg
ICAgaWYgKHRva2VuLm5hbWUoKSA9PSBodG1sVGFnKSB7CkBAIC0yNjI4LDcgKzI2MjgsNyBAQCBi
b29sIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKEF0b21pY0hUTUxU
b2tlbiYmIHRva2VuKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4p
Cit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0dlbmVyaWNSQ0RBVEFTdGFydFRhZyhBdG9t
SFRNTFRva2VuJiYgdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9r
ZW46OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoV1RGTW92ZSh0b2tl
bikpOwpAQCAtMjYzNyw3ICsyNjM3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NH
ZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAgICAgbV9pbnNl
cnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6VGV4dDsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYmIHRva2Vu
KQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0
b21IVE1MVG9rZW4mJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxU
b2tlbjo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudChXVEZNb3ZlKHRv
a2VuKSk7CkBAIC0yNjQ2LDcgKzI2NDYsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYgdG9rZW4pCiAgICAgbV9p
bnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZTo6VGV4dDsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3Zv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0U3RhcnRUYWcoQXRvbUhUTUxUb2tlbiYm
IHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRh
Zyk7CiAgICAgbV90cmVlLmluc2VydFNjcmlwdEVsZW1lbnQoV1RGTW92ZSh0b2tlbikpOwpAQCAt
MjY3MSw3ICsyNjcxLDcgQEAgSFRNTFN0YWNrSXRlbSYgSFRNTFRyZWVCdWlsZGVyOjphZGp1c3Rl
ZEN1cnJlbnRTdGFja0l0ZW0oKSBjb25zdAogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5o
dG1sI3RyZWUtY29uc3RydWN0aW9uCi1ib29sIEhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vz
c1Rva2VuSW5Gb3JlaWduQ29udGVudChjb25zdCBBdG9taWNIVE1MVG9rZW4mIHRva2VuKQorYm9v
bCBIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoY29u
c3QgQXRvbUhUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgaWYgKG1fdHJlZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3MDEsMTIgKzI3MDEsMTIgQEAgYm9vbCBIVE1MVHJl
ZUJ1aWxkZXI6OnNob3VsZFByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoY29uc3QgQXRvbWlj
SFRNTFRva2VuJgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBoYXNBdHRyaWJ1
dGUoY29uc3QgQXRvbWljSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkKK3N0YXRpYyBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBBdG9tSFRNTFRva2VuJiB0b2tlbiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICByZXR1cm4gZmluZEF0dHJpYnV0ZSh0
b2tlbi5hdHRyaWJ1dGVzKCksIG5hbWUpOwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKK3ZvaWQg
SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21IVE1MVG9r
ZW4mJiB0b2tlbikKIHsKICAgICBIVE1MU3RhY2tJdGVtJiBhZGp1c3RlZEN1cnJlbnROb2RlID0g
YWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVtKCk7CiAgICAgCkBAIC0yODMzLDcgKzI4MzMsNyBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6ZmluaXNoZWQoKQogICAgIC8vIFRoZSB0cmVlIGJ1aWxkZXIg
bWlnaHQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhcyBhbiBpbmRpcmVjdCByZXN1bHQgb2YgZmluaXNo
aW5nIHRoZSBwYXJzaW5nLgogfQogCi1pbmxpbmUgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBhcnNl
RXJyb3IoY29uc3QgQXRvbWljSFRNTFRva2VuJikKK2lubGluZSB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cGFyc2VFcnJvcihjb25zdCBBdG9tSFRNTFRva2VuJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCAwZWZjNzdmNjU3NzhhN2Ix
ZDBmYTBjMDg0OTIyYThkZTc4NTdkZjJhLi43NTFjZmEwYzY3Mzg0NjllZmNhZDcwZjEzZTUxMTMw
MzU1NjE5YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogCiAgICAgYm9v
bCBpc1BhcnNpbmdGcmFnbWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb25zdHJ1Y3RUcmVlKEF0
b21pY0hUTUxUb2tlbiYmKTsKKyAgICB2b2lkIGNvbnN0cnVjdFRyZWUoQXRvbUhUTUxUb2tlbiYm
KTsKIAogICAgIGJvb2wgaXNQYXJzaW5nVGVtcGxhdGVDb250ZW50cygpIGNvbnN0OwogICAgIGJv
b2wgaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHRXb3JrKCkgY29uc3Q7CkBAIC0xMTIsMzIgKzExMiwz
MiBAQCBjbGFzcyBIVE1MVHJlZUJ1aWxkZXIgewogICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVy
cyhTdHJpbmcmJik7CiAjZW5kaWYKIAotICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21pY0hUTUxU
b2tlbiYmKTsKLQotICAgIHZvaWQgcHJvY2Vzc0RvY3R5cGVUb2tlbihBdG9taWNIVE1MVG9rZW4m
Jik7Ci0gICAgdm9pZCBwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYpOwotICAgIHZv
aWQgcHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4mJik7Ci0gICAgdm9pZCBwcm9jZXNzQ29t
bWVudChBdG9taWNIVE1MVG9rZW4mJik7Ci0gICAgdm9pZCBwcm9jZXNzQ2hhcmFjdGVyKEF0b21p
Y0hUTUxUb2tlbiYmKTsKLSAgICB2b2lkIHByb2Nlc3NFbmRPZkZpbGUoQXRvbWljSFRNTFRva2Vu
JiYpOwotCi0gICAgYm9vbCBwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRva2Vu
JiYpOwotICAgIHZvaWQgcHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYm
KTsKLSAgICB2b2lkIHByb2Nlc3NTdGFydFRhZ0ZvckluVGFibGUoQXRvbWljSFRNTFRva2VuJiYp
OwotICAgIHZvaWQgcHJvY2Vzc0VuZFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4mJik7Ci0g
ICAgdm9pZCBwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZShBdG9taWNIVE1MVG9rZW4mJik7Ci0gICAg
dm9pZCBwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZUJvZHkoQXRvbWljSFRNTFRva2VuJiYpOwotICAg
IHZvaWQgcHJvY2Vzc0VuZFRhZ0ZvckluUm93KEF0b21pY0hUTUxUb2tlbiYmKTsKLSAgICB2b2lk
IHByb2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbWljSFRNTFRva2VuJiYpOwotCi0gICAgdm9pZCBw
cm9jZXNzSHRtbFN0YXJ0VGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYmKTsKLSAgICBib29s
IHByb2Nlc3NCb2R5RW5kVGFnRm9ySW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYmKTsKKyAgICB2b2lk
IHByb2Nlc3NUb2tlbihBdG9tSFRNTFRva2VuJiYpOworCisgICAgdm9pZCBwcm9jZXNzRG9jdHlw
ZVRva2VuKEF0b21IVE1MVG9rZW4mJik7CisgICAgdm9pZCBwcm9jZXNzU3RhcnRUYWcoQXRvbUhU
TUxUb2tlbiYmKTsKKyAgICB2b2lkIHByb2Nlc3NFbmRUYWcoQXRvbUhUTUxUb2tlbiYmKTsKKyAg
ICB2b2lkIHByb2Nlc3NDb21tZW50KEF0b21IVE1MVG9rZW4mJik7CisgICAgdm9pZCBwcm9jZXNz
Q2hhcmFjdGVyKEF0b21IVE1MVG9rZW4mJik7CisgICAgdm9pZCBwcm9jZXNzRW5kT2ZGaWxlKEF0
b21IVE1MVG9rZW4mJik7CisKKyAgICBib29sIHByb2Nlc3NTdGFydFRhZ0ZvckluSGVhZChBdG9t
SFRNTFRva2VuJiYpOworICAgIHZvaWQgcHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KEF0b21IVE1M
VG9rZW4mJik7CisgICAgdm9pZCBwcm9jZXNzU3RhcnRUYWdGb3JJblRhYmxlKEF0b21IVE1MVG9r
ZW4mJik7CisgICAgdm9pZCBwcm9jZXNzRW5kVGFnRm9ySW5Cb2R5KEF0b21IVE1MVG9rZW4mJik7
CisgICAgdm9pZCBwcm9jZXNzRW5kVGFnRm9ySW5UYWJsZShBdG9tSFRNTFRva2VuJiYpOworICAg
IHZvaWQgcHJvY2Vzc0VuZFRhZ0ZvckluVGFibGVCb2R5KEF0b21IVE1MVG9rZW4mJik7CisgICAg
dm9pZCBwcm9jZXNzRW5kVGFnRm9ySW5Sb3coQXRvbUhUTUxUb2tlbiYmKTsKKyAgICB2b2lkIHBy
b2Nlc3NFbmRUYWdGb3JJbkNlbGwoQXRvbUhUTUxUb2tlbiYmKTsKKworICAgIHZvaWQgcHJvY2Vz
c0h0bWxTdGFydFRhZ0ZvckluQm9keShBdG9tSFRNTFRva2VuJiYpOworICAgIGJvb2wgcHJvY2Vz
c0JvZHlFbmRUYWdGb3JJbkJvZHkoQXRvbUhUTUxUb2tlbiYmKTsKICAgICBib29sIHByb2Nlc3NU
YWJsZUVuZFRhZ0ZvckluVGFibGUoKTsKICAgICBib29sIHByb2Nlc3NDYXB0aW9uRW5kVGFnRm9y
SW5DYXB0aW9uKCk7CiAgICAgYm9vbCBwcm9jZXNzQ29sZ3JvdXBFbmRUYWdGb3JJbkNvbHVtbkdy
b3VwKCk7CiAgICAgYm9vbCBwcm9jZXNzVHJFbmRUYWdGb3JJblJvdygpOwogCi0gICAgdm9pZCBw
cm9jZXNzQW55T3RoZXJFbmRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiYpOworICAgIHZv
aWQgcHJvY2Vzc0FueU90aGVyRW5kVGFnRm9ySW5Cb2R5KEF0b21IVE1MVG9rZW4mJik7CiAKICAg
ICB2b2lkIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoRXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZl
ciYpOwogICAgIGlubGluZSB2b2lkIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkoRXh0
ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlciYpOwpAQCAtMTQ3LDkgKzE0Nyw5IEBAIGNsYXNzIEhU
TUxUcmVlQnVpbGRlciB7CiAgICAgdm9pZCBwcm9jZXNzRmFrZUVuZFRhZyhjb25zdCBBdG9tU3Ry
aW5nJik7CiAgICAgdm9pZCBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAK
LSAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiYp
OwotICAgIHZvaWQgcHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
JiYpOwotICAgIHZvaWQgcHJvY2Vzc1NjcmlwdFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYmKTsK
KyAgICB2b2lkIHByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbUhUTUxUb2tlbiYmKTsK
KyAgICB2b2lkIHByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21IVE1MVG9rZW4mJik7
CisgICAgdm9pZCBwcm9jZXNzU2NyaXB0U3RhcnRUYWcoQXRvbUhUTUxUb2tlbiYmKTsKIAogICAg
IC8vIERlZmF1bHQgcHJvY2Vzc2luZyBmb3IgdGhlIGRpZmZlcmVudCBpbnNlcnRpb24gbW9kZXMu
CiAgICAgdm9pZCBkZWZhdWx0Rm9ySW5pdGlhbCgpOwpAQCAtMTYwLDI2ICsxNjAsMjYgQEAgY2xh
c3MgSFRNTFRyZWVCdWlsZGVyIHsKICAgICB2b2lkIGRlZmF1bHRGb3JBZnRlckhlYWQoKTsKICAg
ICB2b2lkIGRlZmF1bHRGb3JJblRhYmxlVGV4dCgpOwogCi0gICAgYm9vbCBzaG91bGRQcm9jZXNz
VG9rZW5JbkZvcmVpZ25Db250ZW50KGNvbnN0IEF0b21pY0hUTUxUb2tlbiYpOwotICAgIHZvaWQg
cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4mJik7CisgICAgYm9v
bCBzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KGNvbnN0IEF0b21IVE1MVG9rZW4m
KTsKKyAgICB2b2lkIHByb2Nlc3NUb2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbUhUTUxUb2tlbiYm
KTsKICAgICAKICAgICBIVE1MU3RhY2tJdGVtJiBhZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0oKSBj
b25zdDsKIAotICAgIHZvaWQgY2FsbFRoZUFkb3B0aW9uQWdlbmN5KEF0b21pY0hUTUxUb2tlbiYp
OworICAgIHZvaWQgY2FsbFRoZUFkb3B0aW9uQWdlbmN5KEF0b21IVE1MVG9rZW4mKTsKIAogICAg
IHZvaWQgY2xvc2VUaGVDZWxsKCk7CiAKLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDbG9zZShj
b25zdCBIVE1MU3RhY2tJdGVtJik+IHZvaWQgcHJvY2Vzc0Nsb3NlV2hlbk5lc3RlZFRhZyhBdG9t
aWNIVE1MVG9rZW4mJik7CisgICAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ2xvc2UoY29uc3QgSFRN
TFN0YWNrSXRlbSYpPiB2b2lkIHByb2Nlc3NDbG9zZVdoZW5OZXN0ZWRUYWcoQXRvbUhUTUxUb2tl
biYmKTsKIAotICAgIHZvaWQgcGFyc2VFcnJvcihjb25zdCBBdG9taWNIVE1MVG9rZW4mKTsKKyAg
ICB2b2lkIHBhcnNlRXJyb3IoY29uc3QgQXRvbUhUTUxUb2tlbiYpOwogCiAgICAgdm9pZCByZXNl
dEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CiAKLSAgICB2b2lkIGluc2VydEdlbmVyaWNI
VE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mJik7CisgICAgdm9pZCBpbnNlcnRHZW5lcmljSFRN
TEVsZW1lbnQoQXRvbUhUTUxUb2tlbiYmKTsKIAotICAgIHZvaWQgcHJvY2Vzc1RlbXBsYXRlU3Rh
cnRUYWcoQXRvbWljSFRNTFRva2VuJiYpOwotICAgIGJvb2wgcHJvY2Vzc1RlbXBsYXRlRW5kVGFn
KEF0b21pY0hUTUxUb2tlbiYmKTsKLSAgICBib29sIHByb2Nlc3NFbmRPZkZpbGVGb3JJblRlbXBs
YXRlQ29udGVudHMoQXRvbWljSFRNTFRva2VuJiYpOworICAgIHZvaWQgcHJvY2Vzc1RlbXBsYXRl
U3RhcnRUYWcoQXRvbUhUTUxUb2tlbiYmKTsKKyAgICBib29sIHByb2Nlc3NUZW1wbGF0ZUVuZFRh
ZyhBdG9tSFRNTFRva2VuJiYpOworICAgIGJvb2wgcHJvY2Vzc0VuZE9mRmlsZUZvckluVGVtcGxh
dGVDb250ZW50cyhBdG9tSFRNTFRva2VuJiYpOwogCiAgICAgY2xhc3MgRnJhZ21lbnRQYXJzaW5n
Q29udGV4dCB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggM2IwMWQ3ZWQ3OGU4MTZlNWU3YTYxNjNiZTlh
ODIwNTU0NGJhMDc4Yi4uNGRhOTU5ZjQwZmU5ZWEzMzc0N2NkMjM4OGNlYjc5ZjZkNzJkYjdlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtl
UHJlRWxlbWVudCgpCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9jb2x1bW4gbnVtYmVyIGNh
bGN1bGF0aW9ucy4KICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgIGF0dHJp
YnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7
IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiKSk7Ci0gICAgQXRvbWljSFRNTFRva2VuIGZha2VQcmUo
SFRNTFRva2VuOjpTdGFydFRhZywgcHJlVGFnLT5sb2NhbE5hbWUoKSwgV1RGTW92ZShhdHRyaWJ1
dGVzKSk7CisgICAgQXRvbUhUTUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHBy
ZVRhZy0+bG9jYWxOYW1lKCksIFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgIHRyZWVCdWlsZGVy
KCkuY29uc3RydWN0VHJlZShXVEZNb3ZlKGZha2VQcmUpKTsKIAogICAgIC8vIE5vcm1hbGx5IHdl
IHdvdWxkIHNraXAgdGhlIGZpcnN0IFxuIGFmdGVyIGEgPHByZT4gZWxlbWVudCwgYnV0IHdlIGRv
bid0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>