<?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>109845</bug_id>
          
          <creation_ts>2013-02-14 10:33:00 -0800</creation_ts>
          <short_desc>[Chromium] Move PlatformMessagePortChannel to WebCore</short_desc>
          <delta_ts>2013-02-14 11:33:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833214</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-02-14 10:33:00 -0800</bug_when>
    <thetext>[Chromium] Move PlatformMessagePortChannel to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833215</commentid>
    <comment_count>1</comment_count>
      <attachid>188380</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-02-14 10:33:55 -0800</bug_when>
    <thetext>Created attachment 188380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833227</commentid>
    <comment_count>2</comment_count>
      <attachid>188380</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-14 10:45:03 -0800</bug_when>
    <thetext>Comment on attachment 188380
Patch

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

&gt; Source/WebCore/dom/default/chromium/PlatformMessagePortChannelChromium.cpp:37
&gt; +

No need for this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833271</commentid>
    <comment_count>3</comment_count>
      <attachid>188380</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 11:33:26 -0800</bug_when>
    <thetext>Comment on attachment 188380
Patch

Clearing flags on attachment: 188380

Committed r142896: &lt;http://trac.webkit.org/changeset/142896&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833272</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 11:33:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188380</attachid>
            <date>2013-02-14 10:33:55 -0800</date>
            <delta_ts>2013-02-14 11:33:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109845-20130214133005.patch</filename>
            <type>text/plain</type>
            <size>33419</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Mjg5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAyLTE0ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIGxhcmdlciByZWZhY3Rvcmlu
ZyBzZXJpZXM7IHNlZSB0cmFja2luZyBidWcgMTA2ODI5LgorCisgICAgICAgICogV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9k
ZWZhdWx0L2Nocm9taXVtOiBBZGRlZC4KKyAgICAgICAgKiBkb20vZGVmYXVsdC9jaHJvbWl1bS9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbENocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0Q2hhbm5lbCk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNzYWdlUG9ydENoYW5u
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZUlmT3Bl
bik6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmRpc2VudGFuZ2xlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OnRyeUdldE1lc3NhZ2VG
cm9tUmVtb3RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjppc0Nvbm5lY3RlZFRvKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6aGFzUGVuZGluZ0FjdGl2aXR5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6bG9jYWxseUVudGFuZ2xl
ZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6UGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw6On5QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6bWVzc2FnZUF2YWlsYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6ZW50YW5n
bGVJZk9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6
OmRpc2VudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmlzQ29ubmVjdGVkVG8pOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Omhhc1BlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6c2V0RW50YW5n
bGVkQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bDo6d2ViQ2hhbm5lbFJlbGVhc2UpOgorICAgICAgICAqIGRvbS9kZWZhdWx0L2Nocm9taXVtL1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW0uaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbCk6CisKIDIwMTMtMDItMTQgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEluZGV4ZWREQjogQWRkIGEgZmV3IG1vcmUgaGlzdG9ncmFtIGNhbGxzCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDI4ODApCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI5OTYsNiArMjk5Niw4IEBACiAgICAgICAg
ICAgICAnZG9tL1dpbmRvd0V2ZW50Q29udGV4dC5oJywKICAgICAgICAgICAgICdkb20vZGVmYXVs
dC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9kZWZh
dWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLAorICAgICAgICAgICAgJ2RvbS9kZWZh
dWx0L2Nocm9taXVtL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW0uY3BwJywKKyAg
ICAgICAgICAgICdkb20vZGVmYXVsdC9jaHJvbWl1bS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bENocm9taXVtLmgnLAogICAgICAgICBdLAogICAgICAgICAnd2ViY29yZV9odG1sX2ZpbGVzJzog
WwogICAgICAgICAgICAgJ2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDE0Mjg4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw2ICs4MSw3IEBACiAgICAgICAnLi4vY3NzJywKICAgICAgICcuLi9kb20nLAogICAgICAgJy4u
L2RvbS9kZWZhdWx0JywKKyAgICAgICcuLi9kb20vZGVmYXVsdC9jaHJvbWl1bScsCiAgICAgICAn
Li4vZWRpdGluZycsCiAgICAgICAnLi4vZmlsZWFwaScsCiAgICAgICAnLi4vaGlzdG9yeScsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vZGVmYXVsdC9jaHJvbWl1bS9QbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
ZGVmYXVsdC9jaHJvbWl1bS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbENocm9taXVtLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L2Nocm9taXVtL1BsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbENocm9taXVtLmgiCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKKworI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJNZXNzYWdlUG9ydENoYW5uZWwuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWw+IGNoYW5uZWwpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENo
YW5uZWwoY2hhbm5lbCkpOworfQorCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hh
bm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0MSwgUGFzc1JlZlB0cjxNZXNzYWdlUG9y
dD4gcG9ydDIpCit7CisgICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZUNoYW5u
ZWwocG9ydDEsIHBvcnQyKTsKK30KKworTWVzc2FnZVBvcnRDaGFubmVsOjpNZXNzYWdlUG9ydENo
YW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCkKKyAg
ICA6IG1fY2hhbm5lbChjaGFubmVsKQoreworfQorCitNZXNzYWdlUG9ydENoYW5uZWw6On5NZXNz
YWdlUG9ydENoYW5uZWwoKQoreworICAgIC8vIE1ha2Ugc3VyZSB3ZSBjbG9zZSBvdXIgcGxhdGZv
cm0gY2hhbm5lbCB3aGVuIHRoZSBiYXNlIGlzIGZyZWVkLCB0byBrZWVwIHRoZSBjaGFubmVsIG9i
amVjdHMgZnJvbSBsZWFraW5nLgorICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKK30KKworYm9vbCBN
ZXNzYWdlUG9ydENoYW5uZWw6OmVudGFuZ2xlSWZPcGVuKE1lc3NhZ2VQb3J0KiBwb3J0KQorewor
ICAgIHJldHVybiBtX2NoYW5uZWwtPmVudGFuZ2xlSWZPcGVuKHBvcnQpOworfQorCit2b2lkIE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUoKQoreworICAgIG1fY2hhbm5lbC0+ZGlzZW50
YW5nbGUoKTsKK30KKwordm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1v
dGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gbWVzc2FnZSkKK3sK
KyAgICBtX2NoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZSk7Cit9CisKK2Jvb2wg
TWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShPd25QdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsOjpFdmVudERhdGE+JiByZXN1bHQpCit7CisgICAgcmV0dXJuIG1fY2hhbm5l
bC0+dHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUocmVzdWx0KTsKK30KKwordm9pZCBNZXNzYWdlUG9y
dENoYW5uZWw6OmNsb3NlKCkKK3sKKyAgICBtX2NoYW5uZWwtPmNsb3NlKCk7Cit9CisKK2Jvb2wg
TWVzc2FnZVBvcnRDaGFubmVsOjppc0Nvbm5lY3RlZFRvKE1lc3NhZ2VQb3J0KiBwb3J0KQorewor
ICAgIHJldHVybiBtX2NoYW5uZWwtPmlzQ29ubmVjdGVkVG8ocG9ydCk7Cit9CisKK2Jvb2wgTWVz
c2FnZVBvcnRDaGFubmVsOjpoYXNQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIHJldHVybiBtX2No
YW5uZWwtPmhhc1BlbmRpbmdBY3Rpdml0eSgpOworfQorCitNZXNzYWdlUG9ydCogTWVzc2FnZVBv
cnRDaGFubmVsOjpsb2NhbGx5RW50YW5nbGVkUG9ydChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQoreworICAgIC8vIFRoaXMgaXMganVzdCBhbiBvcHRpbWl6YXRpb24sIHNv
IHJldHVybiAwIGFsd2F5cy4KKyAgICByZXR1cm4gMDsKK30KKworCitQYXNzUmVmUHRyPFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsPiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRl
KCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
KCkpOworfQorCitQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKAorICAgIFdlYktpdDo6V2ViTWVzc2FnZVBvcnRD
aGFubmVsKiBjaGFubmVsKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWwoY2hhbm5lbCkpOworfQorCisKK1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCgpCisgICAgOiBtX2xvY2FsUG9ydCgwKQor
eworICAgIG1fd2ViQ2hhbm5lbCA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRl
TWVzc2FnZVBvcnRDaGFubmVsKCk7CisgICAgaWYgKG1fd2ViQ2hhbm5lbCkKKyAgICAgICAgbV93
ZWJDaGFubmVsLT5zZXRDbGllbnQodGhpcyk7Cit9CisKK1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hh
bm5lbCogY2hhbm5lbCkKKyAgICA6IG1fbG9jYWxQb3J0KDApCisgICAgLCBtX3dlYkNoYW5uZWwo
Y2hhbm5lbCkKK3sKK30KKworUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6On5QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbCgpCit7CisgICAgaWYgKG1fd2ViQ2hhbm5lbCkKKyAgICAgICAgbV93
ZWJDaGFubmVsLT5kZXN0cm95KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw6OmNyZWF0ZUNoYW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9ydDEsIFBhc3NSZWZQ
dHI8TWVzc2FnZVBvcnQ+IHBvcnQyKQoreworICAgIC8vIENyZWF0ZSBwcm94aWVzIGZvciBlYWNo
IGVuZHBvaW50LgorICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5l
bDEgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsMiA9IFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpjcmVhdGUoKTsKKworICAgIC8vIEVudGFuZ2xlIHRoZSB0d28gZW5kcG9pbnRzLgor
ICAgIGNoYW5uZWwxLT5zZXRFbnRhbmdsZWRDaGFubmVsKGNoYW5uZWwyKTsKKyAgICBjaGFubmVs
Mi0+c2V0RW50YW5nbGVkQ2hhbm5lbChjaGFubmVsMSk7CisKKyAgICAvLyBOb3cgZW50YW5nbGUg
dGhlIHByb3hpZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYWwgcG9ydHMuCisgICAgcG9ydDEt
PmVudGFuZ2xlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwyKSk7CisgICAgcG9y
dDItPmVudGFuZ2xlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwxKSk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Om1lc3NhZ2VBdmFpbGFibGUoKQorewor
ICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgaWYgKG1fbG9jYWxQb3J0KQorICAg
ICAgICBtX2xvY2FsUG9ydC0+bWVzc2FnZUF2YWlsYWJsZSgpOworfQorCitib29sIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZUlmT3BlbihNZXNzYWdlUG9ydCogcG9ydCkKK3sK
KyAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgIG1fbG9jYWxQb3J0ID0gcG9ydDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6
ZGlzZW50YW5nbGUoKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9s
b2NhbFBvcnQgPSAwOworfQorCit2b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0
TWVzc2FnZVRvUmVtb3RlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+
IG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2xvY2FsUG9ydCB8fCAhbV93ZWJDaGFubmVsKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBtZXNzYWdlU3RyaW5nID0gbWVz
c2FnZS0+bWVzc2FnZSgpLT50b1dpcmVTdHJpbmcoKTsKKyAgICBPd25QdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+IGNoYW5uZWxzID0gbWVzc2FnZS0+Y2hhbm5lbHMoKTsKKyAgICBXZWJLaXQ6
OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiB3ZWJDaGFubmVscyA9IDA7CisgICAgaWYgKGNo
YW5uZWxzICYmIGNoYW5uZWxzLT5zaXplKCkpIHsKKyAgICAgICAgd2ViQ2hhbm5lbHMgPSBuZXcg
V2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheShjaGFubmVscy0+c2l6ZSgpKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5uZWwgPSAo
KmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpOworICAgICAgICAgICAgKCp3ZWJDaGFubmVscylbaV0g
PSBwbGF0Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7CisgICAgICAgICAgICAoKndl
YkNoYW5uZWxzKVtpXS0+c2V0Q2xpZW50KDApOworICAgICAgICB9CisgICAgfQorICAgIG1fd2Vi
Q2hhbm5lbC0+cG9zdE1lc3NhZ2UobWVzc2FnZVN0cmluZywgd2ViQ2hhbm5lbHMpOworfQorCiti
b29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJlbW90ZShP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+JiByZXN1bHQpCit7CisgICAgaWYg
KCFtX3dlYkNoYW5uZWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYktpdDo6V2Vi
U3RyaW5nIG1lc3NhZ2U7CisgICAgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSB3
ZWJDaGFubmVsczsKKyAgICBib29sIHJ2ID0gbV93ZWJDaGFubmVsLT50cnlHZXRNZXNzYWdlKCZt
ZXNzYWdlLCB3ZWJDaGFubmVscyk7CisgICAgaWYgKHJ2KSB7CisgICAgICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgICAgIGlmICh3ZWJDaGFubmVscy5z
aXplKCkpIHsKKyAgICAgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5KHdlYkNoYW5uZWxzLnNpemUoKSkpOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAg
IFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcGxhdGZvcm1DaGFubmVsID0gY3Jl
YXRlKHdlYkNoYW5uZWxzW2ldKTsKKyAgICAgICAgICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0
Q2xpZW50KHBsYXRmb3JtQ2hhbm5lbC5nZXQoKSk7CisgICAgICAgICAgICAgICAgKCpjaGFubmVs
cylbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShwbGF0Zm9ybUNoYW5uZWwpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZWRNZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9t
V2lyZShtZXNzYWdlKTsKKyAgICAgICAgcmVzdWx0ID0gTWVzc2FnZVBvcnRDaGFubmVsOjpFdmVu
dERhdGE6OmNyZWF0ZShzZXJpYWxpemVkTWVzc2FnZS5yZWxlYXNlKCksIGNoYW5uZWxzLnJlbGVh
c2UoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJ2OworfQorCit2b2lkIFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsOjpjbG9zZSgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
KyAgICAvLyBEaXNlbnRhbmdsZSBvdXJzZWx2ZXMgZnJvbSB0aGUgb3RoZXIgZW5kLiBXZSBzdGls
bCBtYWludGFpbiBhIHJlZmVyZW5jZSB0byBtX3dlYkNoYW5uZWwsCisgICAgLy8gc2luY2UgcHJl
dmlvdXNseS1leGlzdGluZyBtZXNzYWdlcyBzaG91bGQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAg
IG1fbG9jYWxQb3J0ID0gMDsKKyAgICBtX2VudGFuZ2xlZENoYW5uZWwgPSAwOworfQorCitib29s
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjppc0Nvbm5lY3RlZFRvKE1lc3NhZ2VQb3J0KiBw
b3J0KQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgcmV0dXJuIG1fZW50
YW5nbGVkQ2hhbm5lbCAmJiBtX2VudGFuZ2xlZENoYW5uZWwtPm1fbG9jYWxQb3J0ID09IHBvcnQ7
Cit9CisKK2Jvb2wgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICByZXR1cm4gbV9sb2Nh
bFBvcnQ7Cit9CisKK3ZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnNldEVudGFuZ2xl
ZENoYW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlKQor
eworICAgIGlmIChtX3dlYkNoYW5uZWwpCisgICAgICAgIG1fd2ViQ2hhbm5lbC0+ZW50YW5nbGUo
cmVtb3RlLT5tX3dlYkNoYW5uZWwpOworCisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
KyAgICBtX2VudGFuZ2xlZENoYW5uZWwgPSByZW1vdGU7Cit9CisKK1dlYktpdDo6V2ViTWVzc2Fn
ZVBvcnRDaGFubmVsKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6d2ViQ2hhbm5lbFJlbGVh
c2UoKQoreworICAgIFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsKiBydiA9IG1fd2ViQ2hh
bm5lbDsKKyAgICBtX3dlYkNoYW5uZWwgPSAwOworICAgIHJldHVybiBydjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQvY2hyb21p
dW0vUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWxDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L2Nocm9taXVtL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsQ2hyb21pdW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0
L2Nocm9taXVtL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW0uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWxDaHJv
bWl1bV9oCisjZGVmaW5lIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW1faAorCisK
KyNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVz
c2FnZVBvcnRDaGFubmVsQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1l
c3NhZ2VQb3J0OworCisvLyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCBpcyBhIHBsYXRmb3Jt
LWRlcGVuZGVudCBpbnRlcmZhY2UgdG8gdGhlIHJlbW90ZSBzaWRlIG9mIGEgbWVzc2FnZSBjaGFu
bmVsLgorY2xhc3MgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+LAorICAgIHB1YmxpYyBXZWJL
aXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIHZv
aWQgY3JlYXRlQ2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUGFzc1JlZlB0cjxNZXNz
YWdlUG9ydD4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbD4gY3JlYXRlKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsKik7CisKKyAgICAv
LyBBUElzIGRlbGVnYXRlZCBmcm9tIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oCisgICAgYm9vbCBlbnRh
bmdsZUlmT3BlbihNZXNzYWdlUG9ydCopOworICAgIHZvaWQgZGlzZW50YW5nbGUoKTsKKyAgICB2
b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6OkV2
ZW50RGF0YT4pOworICAgIGJvb2wgdHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiYpOworICAgIHZvaWQgY2xvc2UoKTsKKyAgICBib29s
IGlzQ29ubmVjdGVkVG8oTWVzc2FnZVBvcnQqKTsKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpOworCisgICAgLy8gUmVsZWFzZXMgb3duZXJzaGlwIG9mIHRoZSBjb250YWluZWQgd2ViIGNo
YW5uZWwuCisgICAgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWwqIHdlYkNoYW5uZWxSZWxl
YXNlKCk7CisKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCgpOworCitw
cml2YXRlOgorICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKCk7CisgICAgUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWwqKTsKKworICAg
IHZvaWQgc2V0RW50YW5nbGVkQ2hhbm5lbChQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPik7CisKKyAgICAvLyBXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudCBp
bXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlQXZhaWxhYmxlKCk7CisKKyAg
ICAvLyBNdXRleCB1c2VkIHRvIGVuc3VyZSBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBvYmplY3Qg
aW50ZXJuYWxzLgorICAgIE11dGV4IG1fbXV0ZXg7CisKKyAgICAvLyBQb2ludGVyIHRvIG91ciBl
bnRhbmdsZWQgcGFpciAtIGNsZWFyZWQgd2hlbiBjbG9zZSgpIGlzIGNhbGxlZC4KKyAgICBSZWZQ
dHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IG1fZW50YW5nbGVkQ2hhbm5lbDsKKworICAg
IC8vIFRoZSBwb3J0IHdlIGFyZSBjb25uZWN0ZWQgdG8gLSB0aGlzIGlzIHRoZSBwb3J0IHRoYXQg
aXMgbm90aWZpZWQgd2hlbiBuZXcgbWVzc2FnZXMgYXJyaXZlLgorICAgIE1lc3NhZ2VQb3J0KiBt
X2xvY2FsUG9ydDsKKworICAgIFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsKiBtX3dlYkNo
YW5uZWw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbENocm9taXVtX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDI4OTApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTE0ICBNYXJrIFBpbGdy
aW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWwgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyBz
ZXJpZXM7IHNlZSB0cmFja2luZyBidWcgMTA2ODI5LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHNyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHNyYy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBzcmMvV2Vi
RE9NTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAg
ICAgICAgKiBzcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYldv
cmtlckNsaWVudEltcGwuY3BwOgorCiAyMDEzLTAyLTA4ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNl
cUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZXhwb3NlIGRpZHtCZWdp
bixDYW5jZWx9RnJhbWUoKSBhbmQge3dpbGwsZGlkfUNvbXBvc2l0ZSgpIG9uIFdlYkRlYlRvb2xz
QWdlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDE0Mjg4MCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAt
Mzk4LDggKzM5OCw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlT3ZlcmxheUxpc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9QYWdlV2lkZ2V0RGVsZWdhdGUuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1BhZ2VXaWRnZXREZWxlZ2F0ZS5oJywKLSAgICAgICAgICAgICAgICAnc3Jj
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1Njcm9s
bGJhckdyb3VwLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDE0Mjg4MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwyNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgotCi0jaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVzc2FnZVBvcnRDaGFubmVsLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgot
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShQYXNz
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQotewotICAgIHJldHVy
biBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsKGNoYW5uZWwpKTsKLX0KLQotdm9pZCBN
ZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZUNoYW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4g
cG9ydDEsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQyKQotewotICAgIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsOjpjcmVhdGVDaGFubmVsKHBvcnQxLCBwb3J0Mik7Ci19Ci0KLU1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCi0gICAgOiBtX2NoYW5uZWwoY2hhbm5lbCkKLXsKLX0K
LQotTWVzc2FnZVBvcnRDaGFubmVsOjp+TWVzc2FnZVBvcnRDaGFubmVsKCkKLXsKLSAgICAvLyBN
YWtlIHN1cmUgd2UgY2xvc2Ugb3VyIHBsYXRmb3JtIGNoYW5uZWwgd2hlbiB0aGUgYmFzZSBpcyBm
cmVlZCwgdG8ga2VlcCB0aGUgY2hhbm5lbCBvYmplY3RzIGZyb20gbGVha2luZy4KLSAgICBtX2No
YW5uZWwtPmNsb3NlKCk7Ci19Ci0KLWJvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZUlm
T3BlbihNZXNzYWdlUG9ydCogcG9ydCkKLXsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5lbnRhbmds
ZUlmT3Blbihwb3J0KTsKLX0KLQotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmRpc2VudGFuZ2xl
KCkKLXsKLSAgICBtX2NoYW5uZWwtPmRpc2VudGFuZ2xlKCk7Ci19Ci0KLXZvaWQgTWVzc2FnZVBv
cnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsOjpFdmVudERhdGE+IG1lc3NhZ2UpCi17Ci0gICAgbV9jaGFubmVsLT5wb3N0TWVzc2FnZVRv
UmVtb3RlKG1lc3NhZ2UpOwotfQotCi1ib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dHJ5R2V0TWVz
c2FnZUZyb21SZW1vdGUoT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiYgcmVz
dWx0KQotewotICAgIHJldHVybiBtX2NoYW5uZWwtPnRyeUdldE1lc3NhZ2VGcm9tUmVtb3RlKHJl
c3VsdCk7Ci19Ci0KLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZSgpCi17Ci0gICAgbV9j
aGFubmVsLT5jbG9zZSgpOwotfQotCi1ib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6aXNDb25uZWN0
ZWRUbyhNZXNzYWdlUG9ydCogcG9ydCkKLXsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5pc0Nvbm5l
Y3RlZFRvKHBvcnQpOwotfQotCi1ib29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6aGFzUGVuZGluZ0Fj
dGl2aXR5KCkKLXsKLSAgICByZXR1cm4gbV9jaGFubmVsLT5oYXNQZW5kaW5nQWN0aXZpdHkoKTsK
LX0KLQotTWVzc2FnZVBvcnQqIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6bG9jYWxseUVudGFuZ2xlZFBv
cnQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICAvLyBUaGlz
IGlzIGp1c3QgYW4gb3B0aW1pemF0aW9uLCBzbyByZXR1cm4gMCBhbHdheXMuCi0gICAgcmV0dXJu
IDA7Ci19Ci0KLQotUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCgpKTsKLX0KLQotUGFzc1JlZlB0cjxQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbD4gUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSgK
LSAgICBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIGNoYW5uZWwpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbChjaGFubmVsKSk7Ci19Ci0KLQotUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKCkKLSAg
ICA6IG1fbG9jYWxQb3J0KDApCi17Ci0gICAgbV93ZWJDaGFubmVsID0gV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5jcmVhdGVNZXNzYWdlUG9ydENoYW5uZWwoKTsKLSAgICBpZiAobV93ZWJD
aGFubmVsKQotICAgICAgICBtX3dlYkNoYW5uZWwtPnNldENsaWVudCh0aGlzKTsKLX0KLQotUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbCogY2hhbm5lbCkKLSAgICA6IG1fbG9jYWxQb3J0KDApCi0gICAgLCBt
X3dlYkNoYW5uZWwoY2hhbm5lbCkKLXsKLX0KLQotUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6
On5QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCgpCi17Ci0gICAgaWYgKG1fd2ViQ2hhbm5lbCkK
LSAgICAgICAgbV93ZWJDaGFubmVsLT5kZXN0cm95KCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw6OmNyZWF0ZUNoYW5uZWwoUGFzc1JlZlB0cjxNZXNzYWdlUG9ydD4gcG9y
dDEsIFBhc3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQyKQotewotICAgIC8vIENyZWF0ZSBwcm94
aWVzIGZvciBlYWNoIGVuZHBvaW50LgotICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hh
bm5lbD4gY2hhbm5lbDEgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsMiA9IFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoKTsKLQotICAgIC8vIEVudGFuZ2xlIHRoZSB0d28g
ZW5kcG9pbnRzLgotICAgIGNoYW5uZWwxLT5zZXRFbnRhbmdsZWRDaGFubmVsKGNoYW5uZWwyKTsK
LSAgICBjaGFubmVsMi0+c2V0RW50YW5nbGVkQ2hhbm5lbChjaGFubmVsMSk7Ci0KLSAgICAvLyBO
b3cgZW50YW5nbGUgdGhlIHByb3hpZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYWwgcG9ydHMu
Ci0gICAgcG9ydDEtPmVudGFuZ2xlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5uZWwy
KSk7Ci0gICAgcG9ydDItPmVudGFuZ2xlKE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKGNoYW5u
ZWwxKSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Om1lc3NhZ2VBdmFp
bGFibGUoKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgaWYgKG1fbG9j
YWxQb3J0KQotICAgICAgICBtX2xvY2FsUG9ydC0+bWVzc2FnZUF2YWlsYWJsZSgpOwotfQotCi1i
b29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjplbnRhbmdsZUlmT3BlbihNZXNzYWdlUG9y
dCogcG9ydCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIG1fbG9jYWxQ
b3J0ID0gcG9ydDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6ZGlzZW50YW5nbGUoKQotewotICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRl
eCk7Ci0gICAgbV9sb2NhbFBvcnQgPSAwOwotfQotCi12b2lkIFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
OjpFdmVudERhdGE+IG1lc3NhZ2UpCi17Ci0gICAgaWYgKCFtX2xvY2FsUG9ydCB8fCAhbV93ZWJD
aGFubmVsKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJTdHJpbmcgbWVzc2FnZVN0cmluZyA9
IG1lc3NhZ2UtPm1lc3NhZ2UoKS0+dG9XaXJlU3RyaW5nKCk7Ci0gICAgT3duUHRyPFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscyA9IG1lc3NhZ2UtPmNoYW5uZWxzKCk7
Ci0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIHdlYkNoYW5uZWxzID0gMDsKLSAgICBp
ZiAoY2hhbm5lbHMgJiYgY2hhbm5lbHMtPnNpemUoKSkgewotICAgICAgICB3ZWJDaGFubmVscyA9
IG5ldyBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheShjaGFubmVscy0+c2l6ZSgpKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGFubmVscy0+c2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBwbGF0Zm9ybUNoYW5u
ZWwgPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpOwotICAgICAgICAgICAgKCp3ZWJDaGFubmVs
cylbaV0gPSBwbGF0Zm9ybUNoYW5uZWwtPndlYkNoYW5uZWxSZWxlYXNlKCk7Ci0gICAgICAgICAg
ICAoKndlYkNoYW5uZWxzKVtpXS0+c2V0Q2xpZW50KDApOwotICAgICAgICB9Ci0gICAgfQotICAg
IG1fd2ViQ2hhbm5lbC0+cG9zdE1lc3NhZ2UobWVzc2FnZVN0cmluZywgd2ViQ2hhbm5lbHMpOwot
fQotCi1ib29sIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOjp0cnlHZXRNZXNzYWdlRnJvbVJl
bW90ZShPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE+JiByZXN1bHQpCi17Ci0g
ICAgaWYgKCFtX3dlYkNoYW5uZWwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFdlYlN0
cmluZyBtZXNzYWdlOwotICAgIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5IHdlYkNoYW5uZWxz
OwotICAgIGJvb2wgcnYgPSBtX3dlYkNoYW5uZWwtPnRyeUdldE1lc3NhZ2UoJm1lc3NhZ2UsIHdl
YkNoYW5uZWxzKTsKLSAgICBpZiAocnYpIHsKLSAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVsczsKLSAgICAgICAgaWYgKHdlYkNoYW5uZWxzLnNpemUoKSkgewot
ICAgICAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkod2ViQ2hhbm5lbHMuc2l6ZSgpKSk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdlYkNoYW5uZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBwbGF0Zm9ybUNoYW5uZWwgPSBjcmVhdGUod2ViQ2hh
bm5lbHNbaV0pOwotICAgICAgICAgICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQocGxh
dGZvcm1DaGFubmVsLmdldCgpKTsKLSAgICAgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZE1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1lc3Nh
Z2UpOwotICAgICAgICByZXN1bHQgPSBNZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6Y3Jl
YXRlKHNlcmlhbGl6ZWRNZXNzYWdlLnJlbGVhc2UoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLXZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw6OmNsb3NlKCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIC8vIERp
c2VudGFuZ2xlIG91cnNlbHZlcyBmcm9tIHRoZSBvdGhlciBlbmQuICBXZSBzdGlsbCBtYWludGFp
biBhIHJlZmVyZW5jZSB0byBtX3dlYkNoYW5uZWwsCi0gICAgLy8gc2luY2UgcHJldmlvdXNseS1l
eGlzdGluZyBtZXNzYWdlcyBzaG91bGQgc3RpbGwgYmUgZGVsaXZlcmVkLgotICAgIG1fbG9jYWxQ
b3J0ID0gMDsKLSAgICBtX2VudGFuZ2xlZENoYW5uZWwgPSAwOwotfQotCi1ib29sIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsOjppc0Nvbm5lY3RlZFRvKE1lc3NhZ2VQb3J0KiBwb3J0KQotewot
ICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7Ci0gICAgcmV0dXJuIG1fZW50YW5nbGVkQ2hh
bm5lbCAmJiBtX2VudGFuZ2xlZENoYW5uZWwtPm1fbG9jYWxQb3J0ID09IHBvcnQ7Ci19Ci0KLWJv
b2wgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6Omhhc1BlbmRpbmdBY3Rpdml0eSgpCi17Ci0g
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKLSAgICByZXR1cm4gbV9sb2NhbFBvcnQ7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OnNldEVudGFuZ2xlZENoYW5uZWwo
UGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlKQotewotICAgIGlm
IChtX3dlYkNoYW5uZWwpCi0gICAgICAgIG1fd2ViQ2hhbm5lbC0+ZW50YW5nbGUocmVtb3RlLT5t
X3dlYkNoYW5uZWwpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKLSAgICBtX2Vu
dGFuZ2xlZENoYW5uZWwgPSByZW1vdGU7Ci19Ci0KLVdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogUGxh
dGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OndlYkNoYW5uZWxSZWxlYXNlKCkKLXsKLSAgICBXZWJN
ZXNzYWdlUG9ydENoYW5uZWwqIHJ2ID0gbV93ZWJDaGFubmVsOwotICAgIG1fd2ViQ2hhbm5lbCA9
IDA7Ci0gICAgcmV0dXJuIHJ2OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmgJKHJldmlzaW9uIDE0Mjg4MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWxfaAotI2RlZmluZSBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbF9oCi0KLQotI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5l
bC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWxDbGllbnQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVzc2FnZVBvcnQ7Ci0KLS8vIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsIGlzIGEgcGxhdGZvcm0tZGVwZW5kZW50IGludGVyZmFjZSB0byB0aGUg
cmVtb3RlIHNpZGUgb2YgYSBtZXNzYWdlIGNoYW5uZWwuCi1jbGFzcyBQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBX
ZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgY3JlYXRlQ2hhbm5lbChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiwgUGFzc1JlZlB0cjxN
ZXNzYWdlUG9ydD4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gY3JlYXRlKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsKik7Ci0KLSAg
ICAvLyBBUElzIGRlbGVnYXRlZCBmcm9tIE1lc3NhZ2VQb3J0Q2hhbm5lbC5oCi0gICAgYm9vbCBl
bnRhbmdsZUlmT3BlbihNZXNzYWdlUG9ydCopOwotICAgIHZvaWQgZGlzZW50YW5nbGUoKTsKLSAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YT4pOwotICAgIGJvb2wgdHJ5R2V0TWVzc2FnZUZyb21SZW1vdGUoT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiYpOwotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBi
b29sIGlzQ29ubmVjdGVkVG8oTWVzc2FnZVBvcnQqIHBvcnQpOwotICAgIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCk7Ci0KLSAgICAvLyBSZWxlYXNlcyBvd25lcnNoaXAgb2YgdGhlIGNvbnRhaW5l
ZCB3ZWIgY2hhbm5lbC4KLSAgICBXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbCogd2ViQ2hh
bm5lbFJlbGVhc2UoKTsKLQotICAgIHZpcnR1YWwgflBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
KCk7Ci0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwoKTsKLSAgICBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbCop
OwotCi0gICAgdm9pZCBzZXRFbnRhbmdsZWRDaGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWw+KTsKLQotICAgIC8vIFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVs
Q2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIG1lc3NhZ2VBdmFpbGFibGUo
KTsKLQotICAgIC8vIE11dGV4IHVzZWQgdG8gZW5zdXJlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhl
IG9iamVjdCBpbnRlcm5hbHMuCi0gICAgTXV0ZXggbV9tdXRleDsKLQotICAgIC8vIFBvaW50ZXIg
dG8gb3VyIGVudGFuZ2xlZCBwYWlyIC0gY2xlYXJlZCB3aGVuIGNsb3NlKCkgaXMgY2FsbGVkLgot
ICAgIFJlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gbV9lbnRhbmdsZWRDaGFubmVs
OwotCi0gICAgLy8gVGhlIHBvcnQgd2UgYXJlIGNvbm5lY3RlZCB0byAtIHRoaXMgaXMgdGhlIHBv
cnQgdGhhdCBpcyBub3RpZmllZCB3aGVuIG5ldyBtZXNzYWdlcyBhcnJpdmUuCi0gICAgTWVzc2Fn
ZVBvcnQqIG1fbG9jYWxQb3J0OwotCi0gICAgV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWwq
IG1fd2ViQ2hhbm5lbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAx
NDI4ODApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TaGFyZWRXb3JrZXJSZXBvc2l0
b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJNZXNzYWdlUG9ydENoYW5uZWwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2hhcmVk
V29ya2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01NZXNzYWdlRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTU1lc3NhZ2VFdmVudC5jcHAJ
KHJldmlzaW9uIDE0Mjg4MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTU1l
c3NhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VQb3J0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbENocm9taXVtLmgiCiAjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZUltcGwuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAkocmV2aXNpb24gMTQyODgwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBACiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiUGVy
Zm9ybWFuY2UuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQ
bHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlJl
bmRlckJveC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29y
a2VySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2hhcmVkV29ya2VySW1wbC5jcHAJKHJldmlzaW9uIDE0Mjg4MCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWxDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwu
Y3BwCShyZXZpc2lvbiAxNDI4ODApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
b3JrZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWxDaHJvbWl1bS5oIgogI2luY2x1ZGUgIldlYkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUg
IldlYkZyYW1lSW1wbC5oIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>