<?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>87492</bug_id>
          
          <creation_ts>2012-05-25 05:12:50 -0700</creation_ts>
          <short_desc>[chromium] Deprecate FileUtilities::getFileSize and getFileModifiedTime in favor of getFileMetadata</short_desc>
          <delta_ts>2012-07-27 01:11:29 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>633842</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-25 05:12:50 -0700</bug_when>
    <thetext>[chromium] Deprecate FileUtilities::getFileSize and getFileModifiedTime in favor of a new single API getFileMetadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634012</commentid>
    <comment_count>1</comment_count>
      <attachid>144090</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-25 10:09:29 -0700</bug_when>
    <thetext>Created attachment 144090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634013</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-25 10:10:49 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634015</commentid>
    <comment_count>3</comment_count>
      <attachid>144092</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-25 10:11:31 -0700</bug_when>
    <thetext>Created attachment 144092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634515</commentid>
    <comment_count>4</comment_count>
      <attachid>144092</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-25 18:43:33 -0700</bug_when>
    <thetext>Comment on attachment 144092
Patch

Clearing flags on attachment: 144092

Committed r118597: &lt;http://trac.webkit.org/changeset/118597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634516</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-25 18:43:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635497</commentid>
    <comment_count>6</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-05-28 18:42:38 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635498</commentid>
    <comment_count>7</comment_count>
      <attachid>144420</attachid>
    <who name="">vollick</who>
    <bug_when>2012-05-28 18:42:42 -0700</bug_when>
    <thetext>Created attachment 144420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635501</commentid>
    <comment_count>8</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-05-28 18:43:44 -0700</bug_when>
    <thetext>Sorry -- this got attached to the wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680252</commentid>
    <comment_count>9</comment_count>
      <attachid>144420</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:11:29 -0700</bug_when>
    <thetext>Comment on attachment 144420
Patch

Cleared review? from attachment 144420 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144090</attachid>
            <date>2012-05-25 10:09:29 -0700</date>
            <delta_ts>2012-05-25 10:11:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87492-20120526020927.patch</filename>
            <type>text/plain</type>
            <size>7567</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMDljNTdkYWY0OWQz
NGU3MTBhNjdiY2IwNzljOGYzNDA4MWQ0OWM4Li4xN2Q1NDJkNDI0YmI4NjBhOGJhMGNmYTFlNzE1
MWJjNTQ4OWIyNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNS0yNSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBEZXByZWNhdGUgRmlsZVV0aWxpdGllczo6Z2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmll
ZFRpbWUgaW4gZmF2b3Igb2YgZ2V0RmlsZU1ldGFkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRp
ZXMuaDoKKwogMjAxMi0wNS0xNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gYWRkIGluc3RydW1lbnRhdGlvbiBmb3IgY29tcG9zaXRp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmMzczMGFkMDVmNzUxYmQ5MTBkYmYwMmRjMGExNTFiZjEwM2MxMmE5
Li44YmQ1Yjc5MWRiZjkwNjBmNGMzYzVlZTE5ZGI1MDA0NmUwZDc2MzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMjUgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRGVwcmVjYXRlIEZpbGVVdGlsaXRpZXM6Omdl
dEZpbGVTaXplIGFuZCBnZXRGaWxlTW9kaWZpZWRUaW1lIGluIGZhdm9yIG9mIGdldEZpbGVNZXRh
ZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc0
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHM6IGV4aXN0aW5nIHRlc3RzIChodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvKiBhbmQg
ZmFzdC9maWxlcy8qKSBzaG91bGQgcGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wNS0y
NSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3Rvcjogc3BlZWQtdXAgSGVhcFNuYXBzaG90Ll9iZnMgbWV0aG9kLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBkNzE4NjdiMTNkZjFkZTU2NzIwNmU0ZmY0ZDg4ZTdhY2EyMWEx
MzA4Li45Mjg4ZjA4MDNlNDY4MzMwZTZhYTJhNDAxNzk2ZGNiNDM3NTk3NjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTI1ICBLaW51a28gWWFz
dWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIERlcHJlY2F0
ZSBGaWxlVXRpbGl0aWVzOjpnZXRGaWxlU2l6ZSBhbmQgZ2V0RmlsZU1vZGlmaWVkVGltZSBpbiBm
YXZvciBvZiBnZXRGaWxlTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg3NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKToKKwogMjAxMi0wNS0yNSAgVy4g
SmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBMYXllckNocm9taXVtIHNob3VsZCByZWNvZ25pc2UgZXhpc3RpbmcgbGF5ZXIgYWN0aXZl
IGFuaW1hdGlvbnMgd2hlbiB0aGUgbGF5ZXIgaXMgYWRkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oCmluZGV4IGQ5MDE3ZjI2OGNi
ZTAxNDIyNzRlOTlhZjU1NzQyNDlmNmFkMWU4M2MuLjEwOThiZGExNTQzMzdkYTlkNjBmNDNiZmEy
ZDhhZDVkOTg1MWEzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZVV0aWxpdGllcy5oCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgLy8gRklYTUU6IERl
cHJlY2F0ZSBnZXRGaWxlU2l6ZSBhbmQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUgb25jZSBnZXRG
aWxlSW5mbyBpcyBpbXBsZW1lbnRlZC4KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZVNpemUoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgV2ViU3RyaW5n
JiBwYXRoLCBkb3VibGUmIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgZ2V0RmlsZUluZm8oY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlSW5mbyYgcmVzdWx0
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgV2ViU3RyaW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2ViU3RyaW5nJiBw
YXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVt
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3Rl
bUNocm9taXVtLmNwcAppbmRleCAzYzVhNTM0Yjc5MzYxMzdiMjBjYzY3MmRhOWY4YTY4MjBiZWFk
NzZjLi4yZmJmNDFjZDYzNDY2ODdlNDU5OGFkYzVjNzYyMzM2NzU4ODk5ZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1
bS5jcHAKQEAgLTUwLDI1ICs1MCwyNiBAQCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKIAogYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVT
aXplKHBhdGgsIHJlc3VsdCk7CisgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOworICAgIGlmICgh
UGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gbWV0YWRhdGEubGVuZ3RoOworICAgIExPR19F
UlJPUigiR2V0RmlsZVNpemUgJWRcbiIsIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3Ry
aW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCByZXN1bHQpOworICAgIEZpbGVNZXRhZGF0
YSBtZXRhZGF0YTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKHBh
dGgsIG1ldGFkYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdCA9IG1ldGFk
YXRhLm1vZGlmaWNhdGlvblRpbWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgZ2V0Rmls
ZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsK
LSAgICAvLyBGSVhNRTogQ2FsbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YSBvbmNl
IGl0IGlzIGltcGxlbWVudGVkLgotICAgIC8vIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZp
bGVNZXRhZGF0YShwYXRoLCBtZXRhZGF0YSk7Ci0gICAgaWYgKCFQbGF0Zm9ybVN1cHBvcnQ6Omdl
dEZpbGVTaXplKHBhdGgsIG1ldGFkYXRhLmxlbmd0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIVBsYXRmb3JtU3VwcG9ydDo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lID0gbW9kaWZpY2F0
aW9uVGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0Ojpn
ZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpOwogfQogCiBTdHJpbmcgZGlyZWN0b3J5TmFt
ZShjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IDYzOTg2OTkwZWQ4ZTNiZWRkMDZlOTYyMmY5
ODljODE3ZGM1MjhjMmYuLjc4MDBmMGNlZmI4OTg3Yzc1ODJmZmViMzAwODQyMDU4M2FkNzQzZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oCkBAIC0xMjYsOCArMTI2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGZpbGVF
eGlzdHMoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKTsKLSAgICBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxv
bmcmIHJlc3VsdCk7Ci0gICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOwogICAgIHN0YXRpYyBib29sIGdldEZpbGVNZXRh
ZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCk7CiAgICAgc3RhdGljIFN0
cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgc3RhdGljIFN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGNvbXBvbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1T
dXBwb3J0LmNwcAppbmRleCBmYjA2Y2NkZjRiZGI1MzVhNWFkOTdkZDU2OTlkN2E1OWMzNTFhNzli
Li5hN2M0MDQ5NzkwMmE4Mzk1ZWNkN2EwYzU5YTc4ZWMyMWQzMzY4ZjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTMxNywyMCArMzE3
LDYgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxl
VXRpbGl0aWVzKCktPmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogfQogCi1ib29sIFBsYXRm
b3JtU3VwcG9ydDo6Z2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJl
c3VsdCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRp
bGl0aWVzKCktPmdldEZpbGVTaXplKHBhdGgsIHJlc3VsdCk7Ci19Ci0KLWJvb2wgUGxhdGZvcm1T
dXBwb3J0OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgcmVzdWx0KQotewotICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghV2Vi
S2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dGltZV90Pihtb2RpZmljYXRpb25UaW1lKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQogewogICAgIFdlYkZp
bGVJbmZvIHdlYkZpbGVJbmZvOwpAQCAtMzM5LDYgKzMyNSw3IEBAIGJvb2wgUGxhdGZvcm1TdXBw
b3J0OjpnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJl
c3VsdCkKICAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IHdlYkZpbGVJbmZvLm1vZGlmaWNh
dGlvblRpbWU7CiAgICAgcmVzdWx0Lmxlbmd0aCA9IHdlYkZpbGVJbmZvLmxlbmd0aDsKICAgICBy
ZXN1bHQudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRhZGF0YTo6VHlwZT4od2ViRmlsZUluZm8u
dHlwZSk7CisgICAgTE9HX0VSUk9SKCJHRVRGSUxFSU5GTzogJWRcbiIsIHN0YXRpY19jYXN0PGlu
dD4ocmVzdWx0Lmxlbmd0aCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144092</attachid>
            <date>2012-05-25 10:11:31 -0700</date>
            <delta_ts>2012-05-28 18:42:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87492-20120526021129.patch</filename>
            <type>text/plain</type>
            <size>7140</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMDljNTdkYWY0OWQz
NGU3MTBhNjdiY2IwNzljOGYzNDA4MWQ0OWM4Li4xN2Q1NDJkNDI0YmI4NjBhOGJhMGNmYTFlNzE1
MWJjNTQ4OWIyNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wNS0yNSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBEZXByZWNhdGUgRmlsZVV0aWxpdGllczo6Z2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmll
ZFRpbWUgaW4gZmF2b3Igb2YgZ2V0RmlsZU1ldGFkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRp
ZXMuaDoKKwogMjAxMi0wNS0xNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gYWRkIGluc3RydW1lbnRhdGlvbiBmb3IgY29tcG9zaXRp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmMzczMGFkMDVmNzUxYmQ5MTBkYmYwMmRjMGExNTFiZjEwM2MxMmE5
Li44YmQ1Yjc5MWRiZjkwNjBmNGMzYzVlZTE5ZGI1MDA0NmUwZDc2MzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMjUgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRGVwcmVjYXRlIEZpbGVVdGlsaXRpZXM6Omdl
dEZpbGVTaXplIGFuZCBnZXRGaWxlTW9kaWZpZWRUaW1lIGluIGZhdm9yIG9mIGdldEZpbGVNZXRh
ZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc0
OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHM6IGV4aXN0aW5nIHRlc3RzIChodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvKiBhbmQg
ZmFzdC9maWxlcy8qKSBzaG91bGQgcGFzcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wNS0y
NSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
IEluc3BlY3Rvcjogc3BlZWQtdXAgSGVhcFNuYXBzaG90Ll9iZnMgbWV0aG9kLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBkNzE4NjdiMTNkZjFkZTU2NzIwNmU0ZmY0ZDg4ZTdhY2EyMWEx
MzA4Li45Mjg4ZjA4MDNlNDY4MzMwZTZhYTJhNDAxNzk2ZGNiNDM3NTk3NjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTI1ICBLaW51a28gWWFz
dWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIERlcHJlY2F0
ZSBGaWxlVXRpbGl0aWVzOjpnZXRGaWxlU2l6ZSBhbmQgZ2V0RmlsZU1vZGlmaWVkVGltZSBpbiBm
YXZvciBvZiBnZXRGaWxlTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg3NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKToKKwogMjAxMi0wNS0yNSAgVy4g
SmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBMYXllckNocm9taXVtIHNob3VsZCByZWNvZ25pc2UgZXhpc3RpbmcgbGF5ZXIgYWN0aXZl
IGFuaW1hdGlvbnMgd2hlbiB0aGUgbGF5ZXIgaXMgYWRkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oCmluZGV4IGQ5MDE3ZjI2OGNi
ZTAxNDIyNzRlOTlhZjU1NzQyNDlmNmFkMWU4M2MuLjEwOThiZGExNTQzMzdkYTlkNjBmNDNiZmEy
ZDhhZDVkOTg1MWEzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZVV0aWxpdGllcy5oCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgLy8gRklYTUU6IERl
cHJlY2F0ZSBnZXRGaWxlU2l6ZSBhbmQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUgb25jZSBnZXRG
aWxlSW5mbyBpcyBpbXBsZW1lbnRlZC4KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZVNpemUoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgV2ViU3RyaW5n
JiBwYXRoLCBkb3VibGUmIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgZ2V0RmlsZUluZm8oY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlSW5mbyYgcmVzdWx0
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVjdG9yeU5hbWUo
Y29uc3QgV2ViU3RyaW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2ViU3RyaW5nJiBw
YXRoLCBjb25zdCBXZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVt
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3Rl
bUNocm9taXVtLmNwcAppbmRleCAzYzVhNTM0Yjc5MzYxMzdiMjBjYzY3MmRhOWY4YTY4MjBiZWFk
NzZjLi5kN2FjMzRjODFhZmFjMDNiZWE4YTcxYjZiOTdlNWM5M2UyODM1ODc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1
bS5jcHAKQEAgLTUwLDI1ICs1MCwyNSBAQCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKIAogYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxv
bmcgbG9uZyYgcmVzdWx0KQogewotICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVT
aXplKHBhdGgsIHJlc3VsdCk7CisgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOworICAgIGlmICgh
UGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgbWV0YWRhdGEpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0ID0gbWV0YWRhdGEubGVuZ3RoOworICAgIHJldHVy
biB0cnVlOwogfQogCiBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCwgdGltZV90JiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgcmVzdWx0KTsKKyAgICBGaWxlTWV0YWRhdGEgbWV0
YWRhdGE7CisgICAgaWYgKCFQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShwYXRoLCBt
ZXRhZGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQgPSBtZXRhZGF0YS5t
b2RpZmljYXRpb25UaW1lOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIGdldEZpbGVNZXRh
ZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7Ci0gICAg
Ly8gRklYTUU6IENhbGwgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEgb25jZSBpdCBp
cyBpbXBsZW1lbnRlZC4KLSAgICAvLyByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0
YWRhdGEocGF0aCwgbWV0YWRhdGEpOwotICAgIGlmICghUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxl
U2l6ZShwYXRoLCBtZXRhZGF0YS5sZW5ndGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFQbGF0Zm9ybVN1cHBvcnQ6OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRp
bWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rmls
ZU1ldGFkYXRhKHBhdGgsIG1ldGFkYXRhKTsKIH0KIAogU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA2Mzk4Njk5MGVkOGUzYmVkZDA2ZTk2MjJmOTg5Yzgx
N2RjNTI4YzJmLi43ODAwZjBjZWZiODk4N2M3NTgyZmZlYjMwMDg0MjA1ODNhZDc0M2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQu
aApAQCAtMTI2LDggKzEyNiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBmaWxlRXhpc3Rz
KGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5n
Jik7CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
Ci0gICAgc3RhdGljIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiBy
ZXN1bHQpOwotICAgIHN0YXRpYyBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsKICAgICBzdGF0aWMgYm9vbCBnZXRGaWxlTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiwgRmlsZU1ldGFkYXRhJiByZXN1bHQpOwogICAgIHN0YXRpYyBTdHJpbmcg
ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHN0YXRpYyBTdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
b21wb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAKaW5kZXggZmIwNmNjZGY0YmRiNTM1YTVhZDk3ZGQ1Njk5ZDdhNTljMzUxYTc5Yi4uZGEx
MTU2ZmIxODhjOWJlODY5ZTRkZTFlZGVkM2M0NmRiNGIxMGZkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC0zMTcsMjAgKzMxNyw2IEBA
IGJvb2wgUGxhdGZvcm1TdXBwb3J0OjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxp
dGllcygpLT5kZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN1
cHBvcnQ6OmdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQp
Ci17Ci0gICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGll
cygpLT5nZXRGaWxlU2l6ZShwYXRoLCByZXN1bHQpOwotfQotCi1ib29sIFBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJl
c3VsdCkKLXsKLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIVdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+ZmlsZVV0aWxpdGllcygpLT5nZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PHRpbWVfdD4obW9kaWZpY2F0aW9uVGltZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIGJvb2wgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKIHsKICAgICBXZWJGaWxlSW5m
byB3ZWJGaWxlSW5mbzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144420</attachid>
            <date>2012-05-28 18:42:42 -0700</date>
            <delta_ts>2012-07-27 01:11:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87492-20120528214241.patch</filename>
            <type>text/plain</type>
            <size>88851</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyYzM4NmJmMjFjNTdk
YjJmNTAwZGJiYWJhYTU0MTFkMzhhMDViMzJhLi43YWE0M2MzMzI5ZWVmMmZiZmMxYWZmNmU3YjY4
YWMwYjMzNzczYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMzEgKzEsMyBAQAotMjAxMi0wNS0yOCAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KLQotICAgICAgICBbY2hyb21pdW1d
IGNyZWF0ZSBXZWJUcmFuc2Zvcm1PcGVyYXRpb24gaW50ZXJmYWNlIGZvciBjaHJvbWl1bSBwbGF0
Zm9ybQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc1
MTAKLQotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KLQotICAgICAgICAqIFBs
YXRmb3JtLmd5cGk6Ci0gICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybU9wZXJh
dGlvbnMuaDogQWRkZWQuCi0gICAgICAgIChXZWJLaXQpOgotICAgICAgICAoV2ViVHJhbnNmb3Jt
T3BlcmF0aW9ucyk6Ci0gICAgICAgIChXZWJUcmFuc2Zvcm1PcGVyYXRpb24pOgotICAgICAgICAq
IGNocm9taXVtL3NyYy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmNwcDogQWRkZWQuCi0gICAgICAg
IChXZWJLaXQpOgotICAgICAgICAoV2ViVHJhbnNmb3JtT3BlcmF0aW9uczo6V2ViVHJhbnNmb3Jt
T3BlcmF0aW9uc1ByaXZhdGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRp
b25zOjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zKToKLSAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNm
b3JtT3BlcmF0aW9uczo6fldlYlRyYW5zZm9ybU9wZXJhdGlvbnMpOgotICAgICAgICAoV2ViS2l0
OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zOjpvcGVyYXRvcj0pOgotICAgICAgICAoV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1PcGVyYXRpb25zOjphcHBseSk6Ci0gICAgICAgIChXZWJLaXQ6OldlYlRyYW5z
Zm9ybU9wZXJhdGlvbnM6OmJsZW5kKToKLSAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtT3Bl
cmF0aW9uczo6bWF0Y2hlc1R5cGVzKToKLSAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtT3Bl
cmF0aW9uczo6YXBwZW5kVHJhbnNsYXRlKToKLSAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3Jt
T3BlcmF0aW9uczo6YXBwZW5kUm90YXRlKToKLSAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3Jt
T3BlcmF0aW9uczo6YXBwZW5kU2NhbGUpOgotICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zvcm1P
cGVyYXRpb25zOjphcHBlbmRTa2V3KToKLSAgICAgICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtT3Bl
cmF0aW9uczo6YXBwZW5kUGVyc3BlY3RpdmUpOgotICAgICAgICAoV2ViS2l0OjpXZWJUcmFuc2Zv
cm1PcGVyYXRpb25zOjphcHBlbmRNYXRyaXgpOgotCiAyMDEyLTA1LTI1ICBLaW51a28gWWFzdWRh
ICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERlcHJlY2F0ZSBG
aWxlVXRpbGl0aWVzOjpnZXRGaWxlU2l6ZSBhbmQgZ2V0RmlsZU1vZGlmaWVkVGltZSBpbiBmYXZv
ciBvZiBnZXRGaWxlTWV0YWRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDI5MjU4
YjdlNDQ2MDgwMmRhMWY0YWU1ODZmMzM2NTRjODZhYjE0OS4uZjRhMzgzMDRkYzRlZGRjMDgxZTc1
MTU3YjBkMDkzZTc5OTM4YTllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMTUg
KzEsMyBAQAotMjAxMi0wNS0yOCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4K
LQotICAgICAgICBbY2hyb21pdW1dIGNyZWF0ZSBXZWJUcmFuc2Zvcm1PcGVyYXRpb24gaW50ZXJm
YWNlIGZvciBjaHJvbWl1bSBwbGF0Zm9ybQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc1MTAKLQotICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KLQotICAgICAgICAqIFdlYktpdC5neXBpOgotICAgICAgICAqIHRlc3RzL1dlYlRyYW5z
Zm9ybU9wZXJhdGlvbnNUZXN0LmNwcDogQWRkZWQuCi0gICAgICAgIChURVNUKToKLSAgICAgICAg
KGNoZWNrUHJvZ3Jlc3MpOgotCiAyMDEyLTA1LTI4ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEJ1aWxkIGZpeCBmb3IgdGhlIEFuZHJv
aWQgYm90LCBzZXQgQ1hYX3RhcmdldCBhdCBneXAgZ2VuZXJhdGlvbi10aW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCAxODQzMzM2MDk1MWIyYmZjZWE3Y2IxMWJi
ZTkwMDFlYTk4NWY0ZTAxLi40YjA1YjJmNTEwYWNmNjYyYWEwMGFlMzcxZWFlYWFkYTRhMWU1Yjhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9H
cmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ1LDE4ICs0NSwz
MiBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJj
Yy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgImNjL0NDS2V5ZnJhbWVkQW5pbWF0aW9u
Q3VydmUuaCIKKwogI2luY2x1ZGUgIkFuaW1hdGlvbklkVmVuZG9yLmgiCiAjaW5jbHVkZSAiQ2Fu
dmFzMkRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgog
I2luY2x1ZGUgIkxpbmtIaWdobGlnaHQuaCIKKyNpbmNsdWRlICJNYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1
ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRl
ICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlNrZXdUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSAiU3lzdGVtVGltZS5o
IgorI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKIAogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRp
b24uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgpAQCAtNjQsNiAr
NzgsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViU2l6ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQ5OCwxMCArNTEzLDE4MSBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKQogICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsKIH0KIAorV2ViVHJhbnNmb3Jt
T3BlcmF0aW9ucyB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucywgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQorewor
ICAgIC8vIFdlIG5lZWQgdG8gZG8gYSBkZWVwIGNvcHkgdGhlIHRyYW5zZm9ybU9wZXJhdGlvbnMg
bWF5IGNvbnRhaW4gcmVmIHBvaW50ZXJzIHRvIFRyYW5zZm9ybU9wZXJhdGlvbiBvYmplY3RzLgor
ICAgIFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMgd2ViVHJhbnNmb3JtT3BlcmF0aW9uczsKKyAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IHRyYW5zZm9ybU9wZXJhdGlvbnMuc2l6ZSgpOyArK2opIHsK
KyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIG9wZXJhdGlvblR5cGUg
PSB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtqXS0+Z2V0T3BlcmF0aW9uVHlwZSgp
OworICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvblR5cGUpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEU6IHsKKyAgICAgICAgICAgIFNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRy
YW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAgICAgICAgICAgIHdl
YlRyYW5zZm9ybU9wZXJhdGlvbnMuYXBwZW5kU2NhbGUodHJhbnNmb3JtLT54KCksIHRyYW5zZm9y
bS0+eSgpLCB0cmFuc2Zvcm0tPnooKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFXzNEOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFOiB7CisgICAgICAgICAgICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9y
bSA9IHN0YXRpY19jYXN0PFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAgICAgICAgICAgIHdlYlRyYW5zZm9y
bU9wZXJhdGlvbnMuYXBwZW5kVHJhbnNsYXRlKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3Jt
LT54KCksIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtLT55
KCksIGJveFNpemUuaGVpZ2h0KCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybS0+eigp
LCAxKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURTogeworICAgICAgICAgICAg
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxSb3RhdGVU
cmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtqXS5n
ZXQoKSk7CisgICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmFwcGVuZFJvdGF0ZSh0
cmFuc2Zvcm0tPngoKSwgdHJhbnNmb3JtLT55KCksIHRyYW5zZm9ybS0+eigpLCB0cmFuc2Zvcm0t
PmFuZ2xlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNLRVdfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6IHsKKyAg
ICAgICAgICAgIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0
PFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMo
KVtqXS5nZXQoKSk7CisgICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmFwcGVuZFNr
ZXcodHJhbnNmb3JtLT5hbmdsZVgoKSwgdHJhbnNmb3JtLT5hbmdsZVkoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFU
UklYOiB7CisgICAgICAgICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9
IHN0YXRpY19jYXN0PE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wZXJhdGlv
bnMub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG0gPSB0cmFuc2Zvcm0tPm1hdHJpeCgpOworICAgICAgICAgICAgd2ViVHJhbnNmb3JtT3Bl
cmF0aW9ucy5hcHBlbmRNYXRyaXgoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobSkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
Ok1BVFJJWF8zRDogeworICAgICAgICAgICAgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24qIHRy
YW5zZm9ybSA9IHN0YXRpY19jYXN0PE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKj4odHJhbnNm
b3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKClbal0uZ2V0KCkpOworICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbSA9IHRyYW5zZm9ybS0+bWF0cml4KCk7CisgICAgICAgICAgICB3ZWJU
cmFuc2Zvcm1PcGVyYXRpb25zLmFwcGVuZE1hdHJpeChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCht
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6IHsKKyAgICAgICAgICAgIFBlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpW2pdLmdldCgpKTsK
KyAgICAgICAgICAgIHdlYlRyYW5zZm9ybU9wZXJhdGlvbnMuYXBwZW5kUGVyc3BlY3RpdmUoZmxv
YXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnBlcnNwZWN0aXZlKCksIDApKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJ
REVOVElUWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAg
ICAgICAvLyBEbyBub3RoaW5nLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gLy8gc3dp
dGNoCisgICAgfSAvLyBmb3IgZWFjaCBvcGVyYXRpb24KKworICAgIHJldHVybiB3ZWJUcmFuc2Zv
cm1PcGVyYXRpb25zOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1l
LCBjbGFzcyBDdXJ2ZT4KK3ZvaWQgYXBwZW5kS2V5ZnJhbWUoQ3VydmUmIGN1cnZlLCBkb3VibGUg
a2V5VGltZSwgY29uc3QgVmFsdWUqIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uLCBjb25zdCBGbG9hdFNpemUmKQoreworICAgIGN1cnZlLmFkZEtleWZy
YW1lKEtleWZyYW1lOjpjcmVhdGUoa2V5VGltZSwgdmFsdWUtPnZhbHVlKCksIHRpbWluZ0Z1bmN0
aW9uKSk7Cit9CisKK3RlbXBsYXRlIDw+Cit2b2lkIGFwcGVuZEtleWZyYW1lPFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlLCBDQ1RyYW5zZm9ybUtleWZyYW1lLCBDQ0tleWZyYW1lZFRyYW5zZm9ybUFu
aW1hdGlvbkN1cnZlPihDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlJiBjdXJ2ZSwg
ZG91YmxlIGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKiB2YWx1ZSwgUGFz
c093blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiwgY29uc3QgRmxvYXRTaXpl
JiBib3hTaXplKQoreworICAgIGN1cnZlLmFkZEtleWZyYW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6
OmNyZWF0ZShrZXlUaW1lLCB0b1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMoKnZhbHVlLT52YWx1ZSgp
LCBib3hTaXplKSwgdGltaW5nRnVuY3Rpb24pKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFZhbHVl
LCBjbGFzcyBLZXlmcmFtZSwgY2xhc3MgQ3VydmU+CitQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0
aW9uPiBjcmVhdGVBY3RpdmVBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
TGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIHNpemVfdCBhbmltYXRpb25JZCwgc2l6
ZV90IGdyb3VwSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0
UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKK3sKKyAg
ICBib29sIGFsdGVybmF0ZSA9IGZhbHNlOworICAgIGJvb2wgcmV2ZXJzZSA9IGZhbHNlOworICAg
IGlmIChhbmltYXRpb24gJiYgYW5pbWF0aW9uLT5pc0RpcmVjdGlvblNldCgpKSB7CisgICAgICAg
IEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGFuaW1hdGlvbi0+ZGly
ZWN0aW9uKCk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25E
aXJlY3Rpb25BbHRlcm5hdGUgfHwgZGlyZWN0aW9uID09IEFuaW1hdGlvbjo6QW5pbWF0aW9uRGly
ZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSkKKyAgICAgICAgICAgIGFsdGVybmF0ZSA9IHRydWU7Cisg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25SZXZl
cnNlIHx8IGRpcmVjdGlvbiA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0
ZVJldmVyc2UpCisgICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBPd25Q
dHI8Q3VydmU+IGN1cnZlID0gQ3VydmU6OmNyZWF0ZSgpOworICAgIFZlY3RvcjxLZXlmcmFtZT4g
a2V5ZnJhbWVzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gcmV2ZXJzZSA/IHZhbHVlTGlzdC5zaXpl
KCkgLSBpIC0gMSA6IGk7CisKKyAgICAgICAgY29uc3QgVmFsdWUqIG9yaWdpbmFsVmFsdWUgPSBz
dGF0aWNfY2FzdDxjb25zdCBWYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOworCisgICAgICAg
IE93blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbjsKKyAgICAgICAgY29uc3Qg
VGltaW5nRnVuY3Rpb24qIG9yaWdpbmFsVGltaW5nRnVuY3Rpb24gPSBvcmlnaW5hbFZhbHVlLT50
aW1pbmdGdW5jdGlvbigpOworCisgICAgICAgIC8vIElmIHRoZXJlIGhhc24ndCBiZWVuIGEgdGlt
aW5nIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleWZyYW1lLCB1c2UgdGhlCisgICAg
ICAgIC8vIGFuaW1hdGlvbidzIHRpbWluZyBmdW5jdGlvbiwgaWYgd2UgaGF2ZSBvbmUuCisgICAg
ICAgIGlmICghb3JpZ2luYWxUaW1pbmdGdW5jdGlvbiAmJiBhbmltYXRpb24tPmlzVGltaW5nRnVu
Y3Rpb25TZXQoKSkKKyAgICAgICAgICAgIG9yaWdpbmFsVGltaW5nRnVuY3Rpb24gPSBhbmltYXRp
b24tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisKKyAgICAgICAgaWYgKG9yaWdpbmFsVGltaW5n
RnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHN3aXRjaCAob3JpZ2luYWxUaW1pbmdGdW5jdGlvbi0+
dHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpTdGVwc0Z1bmN0aW9u
OgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igc3RlcHMgdGltaW5n
IGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
Y2FzZSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb246CisgICAgICAgICAgICAgICAgLy8g
RG9uJ3Qgc2V0IHRoZSB0aW1pbmcgZnVuY3Rpb24uIEtleWZyYW1lcyBhcmUgaW50ZXJwb2xhdGVk
IGxpbmVhcmx5IGlmIHRoZXJlIGlzIG5vIHRpbWluZyBmdW5jdGlvbi4KKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVu
Y3Rpb246CisgICAgICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiog
b3JpZ2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb24qPihvcmlnaW5hbFRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgICAg
ICAgICB0aW1pbmdGdW5jdGlvbiA9IENDQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KG9yaWdpbmFsQmV6aWVyVGltaW5nRnVuY3Rpb24tPngxKCksIG9yaWdpbmFsQmV6aWVyVGltaW5n
RnVuY3Rpb24tPnkxKCksIG9yaWdpbmFsQmV6aWVyVGltaW5nRnVuY3Rpb24tPngyKCksIG9yaWdp
bmFsQmV6aWVyVGltaW5nRnVuY3Rpb24tPnkyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfSAvLyBzd2l0Y2gKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aW1p
bmdGdW5jdGlvbiA9IENDRWFzZVRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsKKworICAgICAgICBk
b3VibGUgZHVyYXRpb24gPSAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNEdXJhdGlvblNldCgp
KSA/IGFuaW1hdGlvbi0+ZHVyYXRpb24oKSA6IDE7CisgICAgICAgIGRvdWJsZSBrZXlUaW1lID0g
b3JpZ2luYWxWYWx1ZS0+a2V5VGltZSgpICogZHVyYXRpb247CisgICAgICAgIGlmIChyZXZlcnNl
KQorICAgICAgICAgICAga2V5VGltZSA9IGR1cmF0aW9uIC0ga2V5VGltZTsKKyAgICAgICAgYXBw
ZW5kS2V5ZnJhbWU8VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oKmN1cnZlLCBrZXlUaW1lLCBvcmln
aW5hbFZhbHVlLCB0aW1pbmdGdW5jdGlvbi5yZWxlYXNlKCksIGJveFNpemUpOworICAgIH0KKwor
ICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbSA9IENDQWN0aXZlQW5pbWF0aW9uOjpj
cmVhdGUoY3VydmUucmVsZWFzZSgpLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwgdGFyZ2V0UHJvcGVy
dHkpOworCisgICAgQVNTRVJUKGFuaW0uZ2V0KCkpOworCisgICAgaWYgKGFuaW0uZ2V0KCkpIHsK
KyAgICAgICAgaW50IGl0ZXJhdGlvbnMgPSAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNJdGVy
YXRpb25Db3VudFNldCgpKSA/IGFuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKSA6IDE7CisgICAg
ICAgIGFuaW0tPnNldEl0ZXJhdGlvbnMoaXRlcmF0aW9ucyk7CisgICAgICAgIGFuaW0tPnNldEFs
dGVybmF0ZXNEaXJlY3Rpb24oYWx0ZXJuYXRlKTsKKyAgICB9CisKKyAgICAvLyBJbiBvcmRlciB0
byBhdm9pZCBza2V3LCB0aGUgbWFpbiB0aHJlYWQgYW5pbWF0aW9uIGNhbm5vdCB0aWNrIHVudGls
IGl0IGhhcyByZWNlaXZlZCB0aGUgc3RhcnQgdGltZSBvZgorICAgIC8vIHRoZSBjb3JyZXNwb25k
aW5nIGltcGwgdGhyZWFkIGFuaW1hdGlvbi4KKyAgICBhbmltLT5zZXROZWVkc1N5bmNocm9uaXpl
ZFN0YXJ0VGltZSh0cnVlKTsKKworICAgIC8vIElmIHRpbWVPZmZzZXQgPiAwLCB0aGVuIHRoZSBh
bmltYXRpb24gaGFzIHN0YXJ0ZWQgaW4gdGhlIHBhc3QuCisgICAgYW5pbS0+c2V0VGltZU9mZnNl
dCh0aW1lT2Zmc2V0KTsKKworICAgIHJldHVybiBhbmltLnJlbGVhc2UoKTsKK30KKwogYm9vbCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlz
dCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW1h
dGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsK
ICAgICBwcmltYXJ5TGF5ZXIoKS51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKS0+c2V0TGF5ZXJBbmlt
YXRpb25EZWxlZ2F0ZSh0aGlzKTsKLSAgICByZXR1cm4gcHJpbWFyeUxheWVyKCkudW53cmFwPExh
eWVyQ2hyb21pdW0+KCktPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbiwg
bWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSksIEFuaW1hdGlvbklkVmVuZG9yOjpn
ZXROZXh0R3JvdXBJZCgpLCB0aW1lT2Zmc2V0KTsKKworICAgIGludCBhbmltYXRpb25JZCA9IG1h
cEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpOworICAgIGludCBncm91cElkID0gQW5p
bWF0aW9uSWRWZW5kb3I6OmdldE5leHRHcm91cElkKCk7CisKKyAgICBPd25QdHI8Q0NBY3RpdmVB
bmltYXRpb24+IHRvQWRkOworICAgIGlmICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFBy
b3BlcnR5V2Via2l0VHJhbnNmb3JtKSB7CisgICAgICAgIGJvb2wgaGFzUm90YXRpb25PZk1vcmVU
aGFuMTgwRGVncmVlcyA9IGZhbHNlOworICAgICAgICB2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bnModmFsdWVzLCBoYXNSb3RhdGlvbk9mTW9yZVRoYW4xODBEZWdyZWVzKTsKKyAgICAgICAgaWYg
KGhhc1JvdGF0aW9uT2ZNb3JlVGhhbjE4MERlZ3JlZXMpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHRvQWRkID0gY3JlYXRlQWN0aXZlQW5pbWF0aW9uPFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlLCBDQ1RyYW5zZm9ybUtleWZyYW1lLCBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIGdyb3VwSWQsIHRpbWVP
ZmZzZXQsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIEZsb2F0U2l6ZShib3hTaXplKSk7
CisgICAgfSBlbHNlIGlmICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5T3Bh
Y2l0eSkKKyAgICAgICAgdG9BZGQgPSBjcmVhdGVBY3RpdmVBbmltYXRpb248RmxvYXRBbmltYXRp
b25WYWx1ZSwgQ0NGbG9hdEtleWZyYW1lLCBDQ0tleWZyYW1lZEZsb2F0QW5pbWF0aW9uQ3VydmU+
KHZhbHVlcywgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwgdGltZU9mZnNldCwgQ0NB
Y3RpdmVBbmltYXRpb246Ok9wYWNpdHksIEZsb2F0U2l6ZSgpKTsKKworICAgIGlmICh0b0FkZC5n
ZXQoKSkgeworICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGFuaW1hdGlvbnMgd2l0aCB0
aGUgc2FtZSBhbmltYXRpb24gaWQgYW5kIHRhcmdldCBwcm9wZXJ0eS4KKyAgICAgICAgcHJpbWFy
eUxheWVyKCkudW53cmFwPExheWVyQ2hyb21pdW0+KCktPmxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpLT5yZW1vdmVBbmltYXRpb24odG9BZGQtPmlkKCksIHRvQWRkLT50YXJnZXRQcm9wZXJ0eSgp
KTsKKyAgICAgICAgcmV0dXJuIHByaW1hcnlMYXllcigpLnVud3JhcDxMYXllckNocm9taXVtPigp
LT5hZGRBbmltYXRpb24odG9BZGQucmVsZWFzZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFuaW1hdGlvbihjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcAppbmRleCA3NDQ1OWE4NTFkMWFjMjZhZWVhODQyMWE0M2UxNWY4M2NmNDFkMDMwLi40
NDM2YWQ2MmRmNWQ2YmVhOTk2NzYxZDExNzgyZDg4NmQzYjRjYWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCisjaW5jbHVkZSAiY2MvQ0NBY3RpdmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0Fu
aW1hdGlvbkV2ZW50cy5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlLmgiCkBAIC01OTgsMTcg
KzU5OSwxNSBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybUZyb21BbmltYXRpb24o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZgogICAgIG1fdHJhbnNmb3JtID0gdHJh
bnNmb3JtOwogfQogCi1ib29sIExheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmlt
YXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklkLCBpbnQgZ3JvdXBJZCwgZG91YmxlIHRp
bWVPZmZzZXQpCitib29sIExheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihQYXNzT3duUHRyPEND
QWN0aXZlQW5pbWF0aW9uPiBhbmltYXRpb24pCiB7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3Qg
fHwgIW1fbGF5ZXJUcmVlSG9zdC0+c2V0dGluZ3MoKS50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgYWRkZWRBbmltYXRpb24gPSBtX2xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5p
bWF0aW9uLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwgdGltZU9mZnNldCk7Ci0gICAgaWYgKGFkZGVk
QW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkQWRkQW5pbWF0aW9uKCk7
Ci0gICAgICAgIHNldE5lZWRzQ29tbWl0KCk7Ci0gICAgfQotICAgIHJldHVybiBhZGRlZEFuaW1h
dGlvbjsKKyAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+YWRkQW5pbWF0aW9uKGFuaW1h
dGlvbik7CisgICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRBbmltYXRpb24oKTsKKyAgICBzZXRO
ZWVkc0NvbW1pdCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06
OnBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmgKaW5kZXggOWJlMDI3OWUyYWViY2Q3Y2RjN2M2OGJkMDI1ZWJlMDg0MWMxNzVk
My4uOTdhMjM4NGFlMzkwMTAzNDE2ZWZkMjM2OGJmN2QyOGE5ZDYyYTM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaApAQCAtNTcsNiArNTcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENDQWN0aXZlQW5pbWF0aW9uOwogc3RydWN0IENDQW5pbWF0aW9uRXZlbnQ7CiBjbGFzcyBDQ0xh
eWVyQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBDQ0xheWVySW1wbDsKQEAgLTIzNCw3ICsyMzUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHdheXNSZXNlcnZlVGV4dHVyZXMoYm9vbCBhbHdh
eXNSZXNlcnZlVGV4dHVyZXMpIHsgbV9hbHdheXNSZXNlcnZlVGV4dHVyZXMgPSBhbHdheXNSZXNl
cnZlVGV4dHVyZXM7IH0KICAgICBib29sIGFsd2F5c1Jlc2VydmVUZXh0dXJlcygpIGNvbnN0IHsg
cmV0dXJuIG1fYWx3YXlzUmVzZXJ2ZVRleHR1cmVzOyB9CiAKLSAgICBib29sIGFkZEFuaW1hdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0
IEFuaW1hdGlvbiosIGludCBhbmltYXRpb25JZCwgaW50IGdyb3VwSWQsIGRvdWJsZSB0aW1lT2Zm
c2V0KTsKKyAgICBib29sIGFkZEFuaW1hdGlvbihQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9u
Pik7CiAgICAgdm9pZCBwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1l
T2Zmc2V0KTsKICAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MaW5r
SGlnaGxpZ2h0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xpbmtIaWdobGlnaHQuY3BwCmluZGV4IDUzNTM2YjMyY2UwYWQ3MDcyNjEzMjU0MzJhMGExNTE1
YTE2ZTA0ODcuLjhlZDE3OWRkODExZWU3NjBkZWZkZDE5ZTVmOTEwMmQ1MzI3NmUyYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xpbmtIaWdo
bGlnaHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xpbmtIaWdobGlnaHQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIExpbmtIaWdobGlnaHQ6OkxpbmtI
aWdobGlnaHQoR3JhcGhpY3NMYXllckNocm9taXVtKiBwYXJlbnQsIGNvbnN0IFBhdGgmIHBhdGgs
IGluCiAgICAgLy8gYW5pbWF0aW9uSWQgPSAxIGlzIHJlc2VydmVkIGZvciB1cy4KICAgICBPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRl
KGN1cnZlLnJlbGVhc2UoKSwgYW5pbWF0aW9uSWQsIGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9u
OjpPcGFjaXR5KSk7CiAgICAgYW5pbWF0aW9uLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGlt
ZSh0cnVlKTsKLSAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkt
PmFkZChhbmltYXRpb24ucmVsZWFzZSgpKTsKKyAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKCktPmFkZEFuaW1hdGlvbihhbmltYXRpb24ucmVsZWFzZSgpKTsKIH0K
IAogTGlua0hpZ2hsaWdodDo6fkxpbmtIaWdobGlnaHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25D
dXJ2ZS5oCmluZGV4IDdmNTA2YTcwNmYyYTQzYWU2ZDM4YTVhZjYzYmQ3NWNmOGNiM2U3ZDUuLjM5
OWUwNjZiZDIwNjJiN2ExYWYyMWQ2NmU2M2U4NGZjMWZhNmM5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fu
aW1hdGlvbkN1cnZlLmgKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgQ0NUcmFuc2Zvcm1BbmltYXRp
b25DdXJ2ZSA6IHB1YmxpYyBDQ0FuaW1hdGlvbkN1cnZlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGdldFZhbHVlKGRvdWJsZSB0LCBjb25zdCBJbnRTaXplJiBsYXllclNpemUp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdldFZhbHVlKGRv
dWJsZSB0KSBjb25zdCA9IDA7CiAKICAgICAvLyBQYXJ0aWFsIENDQW5pbWF0aW9uIGltcGxlbWVu
dGF0aW9uLgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
VHJhbnNmb3JtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3Vy
dmUuY3BwCmluZGV4IGFlNDFmZTA2OTViMzBkNmEyOTQ3NzU1MGVmNmYxOTliMTMxNGNmZDkuLmVm
NDdhOTVkMjNjN2Q4NGI2ZjhiMmIyODAxOGU5ZDkyOWE5YWY3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0
aW9uQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmUuY3BwCkBAIC0yNiwxNSArMjYsNiBAQAog
CiAjaW5jbHVkZSAiY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oIgogCi0jaW5jbHVkZSAi
SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbmNsdWRlICJNYXRyaXgzRFRyYW5zZm9y
bU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIk1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2lu
Y2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiUm90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCIKLSNpbmNsdWRlICJTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExNCwxMiArMTA1LDEyIEBAIFBhc3NPd25QdHI8Q0NGbG9h
dEtleWZyYW1lPiBDQ0Zsb2F0S2V5ZnJhbWU6OmNsb25lKCkgY29uc3QKICAgICByZXR1cm4gQ0NG
bG9hdEtleWZyYW1lOjpjcmVhdGUodGltZSgpLCB2YWx1ZSgpLCB0aW1pbmdGdW5jdGlvbigpID8g
Y2xvbmVUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlvbigpKSA6IG51bGxwdHIpOwogfQogCi1Q
YXNzT3duUHRyPENDVHJhbnNmb3JtS2V5ZnJhbWU+IENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0
ZShkb3VibGUgdGltZSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUsIFBhc3NPd25Q
dHI8Q0NUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCitQYXNzT3duUHRyPENDVHJhbnNm
b3JtS2V5ZnJhbWU+IENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZShkb3VibGUgdGltZSwgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc093blB0cjxDQ1Rp
bWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENDVHJhbnNmb3JtS2V5ZnJhbWUodGltZSwgdmFsdWUsIHRpbWluZ0Z1bmN0aW9uKSk7CiB9CiAK
LUNDVHJhbnNmb3JtS2V5ZnJhbWU6OkNDVHJhbnNmb3JtS2V5ZnJhbWUoZG91YmxlIHRpbWUsIGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rp
b24+IHRpbWluZ0Z1bmN0aW9uKQorQ0NUcmFuc2Zvcm1LZXlmcmFtZTo6Q0NUcmFuc2Zvcm1LZXlm
cmFtZShkb3VibGUgdGltZSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiB2
YWx1ZSwgUGFzc093blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbikKICAgICA6
IENDS2V5ZnJhbWUodGltZSwgdGltaW5nRnVuY3Rpb24pCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQog
ewpAQCAtMTI5LDc4ICsxMjAsMTQgQEAgQ0NUcmFuc2Zvcm1LZXlmcmFtZTo6fkNDVHJhbnNmb3Jt
S2V5ZnJhbWUoKQogewogfQogCi1jb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBDQ1RyYW5zZm9y
bUtleWZyYW1lOjp2YWx1ZSgpIGNvbnN0Citjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJh
dGlvbnMmIENDVHJhbnNmb3JtS2V5ZnJhbWU6OnZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV92YWx1ZTsKIH0KIAogUGFzc093blB0cjxDQ1RyYW5zZm9ybUtleWZyYW1lPiBDQ1RyYW5zZm9y
bUtleWZyYW1lOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgLy8gV2UgbmVlZCB0byBkbyBhIGRlZXAg
Y29weSB0aGUgbV92YWx1ZSBtYXkgY29udGFpbiByZWYgcG9pbnRlcnMgdG8gVHJhbnNmb3JtT3Bl
cmF0aW9uIG9iamVjdHMuCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV92YWx1ZS5zaXplKCk7ICsraikgewotICAgICAgICBU
cmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZSA9IG1fdmFsdWUu
b3BlcmF0aW9ucygpW2pdLT5nZXRPcGVyYXRpb25UeXBlKCk7Ci0gICAgICAgIHN3aXRjaCAob3Bl
cmF0aW9uVHlwZSkgewotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWDoK
LSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6Ci0gICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfM0Q6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRTog
ewotICAgICAgICAgICAgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRp
Y19jYXN0PFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4obV92YWx1ZS5vcGVyYXRpb25zKClbal0u
Z2V0KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHJhbnNmb3JtLT54KCksIHRyYW5zZm9ybS0+eSgp
LCB0cmFuc2Zvcm0tPnooKSwgb3BlcmF0aW9uVHlwZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgot
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6Ci0gICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURTogewotICAgICAgICAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
KiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPiht
X3ZhbHVlLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHJh
bnNmb3JtLT54KCksIHRyYW5zZm9ybS0+eSgpLCB0cmFuc2Zvcm0tPnooKSwgb3BlcmF0aW9uVHlw
ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlJPVEFURV9YOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
Uk9UQVRFX1k6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6Ci0g
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6IHsKLSAgICAgICAgICAgIFJv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8Um90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uKj4obV92YWx1ZS5vcGVyYXRpb25zKClbal0uZ2V0KCkpOwotICAgICAg
ICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKHRyYW5zZm9ybS0+eCgpLCB0cmFuc2Zvcm0tPnkoKSwgdHJhbnNmb3JtLT56
KCksIHRyYW5zZm9ybS0+YW5nbGUoKSwgb3BlcmF0aW9uVHlwZSkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoK
LSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKLSAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6IHsKLSAgICAgICAgICAgIFNrZXdUcmFuc2Zvcm1PcGVy
YXRpb24qIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24qPiht
X3ZhbHVlLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoU2tld1RyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRyYW5zZm9y
bS0+YW5nbGVYKCksIHRyYW5zZm9ybS0+YW5nbGVZKCksIG9wZXJhdGlvblR5cGUpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpNQVRSSVg6IHsKLSAgICAgICAgICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNm
b3JtID0gc3RhdGljX2Nhc3Q8TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKj4obV92YWx1ZS5vcGVy
YXRpb25zKClbal0uZ2V0KCkpOwotICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbSA9
IHRyYW5zZm9ybS0+bWF0cml4KCk7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMo
KS5hcHBlbmQoTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobS5hKCksIG0uYigpLCBt
LmMoKSwgbS5kKCksIG0uZSgpLCBtLmYoKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDogewotICAgICAg
ICAgICAgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0
PE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKj4obV92YWx1ZS5vcGVyYXRpb25zKClbal0uZ2V0
KCkpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHJhbnNmb3JtLT5tYXRyaXgoKSkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlBFUlNQRUNUSVZFOiB7Ci0gICAgICAgICAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
biogdHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24q
PihtX3ZhbHVlLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZSh0cmFuc2Zvcm0tPnBlcnNwZWN0aXZlKCkpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJREVOVElUWTogewotICAgICAg
ICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKLSAgICAgICAgICAgIC8vIERvIG5vdGhp
bmcuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSAvLyBzd2l0Y2gKLSAgICB9IC8vIGZv
ciBlYWNoIG9wZXJhdGlvbgotCi0gICAgcmV0dXJuIENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0
ZSh0aW1lKCksIG9wZXJhdGlvbnMsIHRpbWluZ0Z1bmN0aW9uKCkgPyBjbG9uZVRpbWluZ0Z1bmN0
aW9uKHRpbWluZ0Z1bmN0aW9uKCkpIDogbnVsbHB0cik7CisgICAgcmV0dXJuIENDVHJhbnNmb3Jt
S2V5ZnJhbWU6OmNyZWF0ZSh0aW1lKCksIHZhbHVlKCksIHRpbWluZ0Z1bmN0aW9uKCkgPyBjbG9u
ZVRpbWluZ0Z1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uKCkpIDogbnVsbHB0cik7CiB9CiAKIFBhc3NP
d25QdHI8Q0NLZXlmcmFtZWRGbG9hdEFuaW1hdGlvbkN1cnZlPiBDQ0tleWZyYW1lZEZsb2F0QW5p
bWF0aW9uQ3VydmU6OmNyZWF0ZSgpCkBAIC0yODcsMTkgKzIxNCwxMyBAQCBQYXNzT3duUHRyPEND
QW5pbWF0aW9uQ3VydmU+IENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNsb25l
KCkgY29uc3QKICAgICByZXR1cm4gdG9SZXR1cm4ucmVsZWFzZSgpOwogfQogCi1UcmFuc2Zvcm1h
dGlvbk1hdHJpeCBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpnZXRWYWx1ZShk
b3VibGUgdCwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplKSBjb25zdAorVHJhbnNmb3JtYXRpb25N
YXRyaXggQ0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6Z2V0VmFsdWUoZG91Ymxl
IHQpIGNvbnN0CiB7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtTWF0cml4Owot
Ci0gICAgaWYgKHQgPD0gbV9rZXlmcmFtZXMuZmlyc3QoKS0+dGltZSgpKSB7Ci0gICAgICAgIG1f
a2V5ZnJhbWVzLmZpcnN0KCktPnZhbHVlKCkuYXBwbHkobGF5ZXJTaXplLCB0cmFuc2Zvcm1NYXRy
aXgpOwotICAgICAgICByZXR1cm4gdHJhbnNmb3JtTWF0cml4OwotICAgIH0KKyAgICBpZiAodCA8
PSBtX2tleWZyYW1lcy5maXJzdCgpLT50aW1lKCkpCisgICAgICAgIHJldHVybiBtX2tleWZyYW1l
cy5maXJzdCgpLT52YWx1ZSgpLmFwcGx5KCkudG9XZWJDb3JlVHJhbnNmb3JtKCk7CiAKLSAgICBp
ZiAodCA+PSBtX2tleWZyYW1lcy5sYXN0KCktPnRpbWUoKSkgewotICAgICAgICBtX2tleWZyYW1l
cy5sYXN0KCktPnZhbHVlKCkuYXBwbHkobGF5ZXJTaXplLCB0cmFuc2Zvcm1NYXRyaXgpOwotICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtTWF0cml4OwotICAgIH0KKyAgICBpZiAodCA+PSBtX2tleWZy
YW1lcy5sYXN0KCktPnRpbWUoKSkKKyAgICAgICAgcmV0dXJuIG1fa2V5ZnJhbWVzLmxhc3QoKS0+
dmFsdWUoKS5hcHBseSgpLnRvV2ViQ29yZVRyYW5zZm9ybSgpOwogCiAgICAgc2l6ZV90IGkgPSAw
OwogICAgIGZvciAoOyBpIDwgbV9rZXlmcmFtZXMuc2l6ZSgpIC0gMTsgKytpKSB7CkBAIC0zMTIs
MTkgKzIzMyw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5p
bWF0aW9uQ3VydmU6OmdldFZhbHVlKGRvdWJsZSB0LCBjb25zCiAgICAgaWYgKG1fa2V5ZnJhbWVz
W2ldLT50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICBwcm9ncmVzcyA9IG1fa2V5ZnJhbWVzW2ld
LT50aW1pbmdGdW5jdGlvbigpLT5nZXRWYWx1ZShwcm9ncmVzcyk7CiAKLSAgICBpZiAobV9rZXlm
cmFtZXNbaV0tPnZhbHVlKCkub3BlcmF0aW9uc01hdGNoKG1fa2V5ZnJhbWVzW2krMV0tPnZhbHVl
KCkpKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9rZXlmcmFtZXNbaSsxXS0+
dmFsdWUoKS5zaXplKCk7ICsraikKLSAgICAgICAgICAgIG1fa2V5ZnJhbWVzW2krMV0tPnZhbHVl
KCkub3BlcmF0aW9ucygpW2pdLT5ibGVuZChtX2tleWZyYW1lc1tpXS0+dmFsdWUoKS5hdChqKSwg
cHJvZ3Jlc3MpLT5hcHBseSh0cmFuc2Zvcm1NYXRyaXgsIGxheWVyU2l6ZSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc291cmNlOwotCi0gICAgICAgIG1fa2V5
ZnJhbWVzW2ldLT52YWx1ZSgpLmFwcGx5KGxheWVyU2l6ZSwgc291cmNlKTsKLSAgICAgICAgbV9r
ZXlmcmFtZXNbaSsxXS0+dmFsdWUoKS5hcHBseShsYXllclNpemUsIHRyYW5zZm9ybU1hdHJpeCk7
Ci0KLSAgICAgICAgdHJhbnNmb3JtTWF0cml4LmJsZW5kKHNvdXJjZSwgcHJvZ3Jlc3MpOwotICAg
IH0KLQotICAgIHJldHVybiB0cmFuc2Zvcm1NYXRyaXg7CisgICAgcmV0dXJuIG1fa2V5ZnJhbWVz
W2krMV0tPnZhbHVlKCkuYmxlbmQobV9rZXlmcmFtZXNbaV0tPnZhbHVlKCksIHByb2dyZXNzKS50
b1dlYkNvcmVUcmFuc2Zvcm0oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlm
cmFtZWRBbmltYXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oCmluZGV4IDhkMWYwZTA1NWY0
Mjk3ZDQzNjM3Nzc5OGRjNDI1ZGE4ZDk0ZjUwMWYuLjE1ZjEzOWZhMGIxYTExMjZjNGRkMjJiMTMw
NTZiNDI1NDkwM2U5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlv
bkN1cnZlLmgKQEAgLTI1LDEwICsyNSwxMSBAQAogI2lmbmRlZiBDQ0tleWZyYW1lZEFuaW1hdGlv
bkN1cnZlX2gKICNkZWZpbmUgQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZV9oCiAKLSNpbmNsdWRl
ICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiY2MvQ0NBbmltYXRpb25DdXJ2ZS5o
IgogI2luY2x1ZGUgImNjL0NDVGltaW5nRnVuY3Rpb24uaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmg+CisKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApAQCAtNjUsMTcgKzY2LDE3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIENDVHJhbnNmb3JtS2V5ZnJhbWUgOiBwdWJsaWMgQ0NLZXlmcmFtZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUcmFuc2Zvcm1LZXlmcmFtZT4gY3JlYXRlKGRvdWJs
ZSB0aW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc093blB0cjxDQ1Rp
bWluZ0Z1bmN0aW9uPik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUcmFuc2Zvcm1LZXlmcmFt
ZT4gY3JlYXRlKGRvdWJsZSB0aW1lLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+KTsKICAgICB2aXJ0dWFsIH5D
Q1RyYW5zZm9ybUtleWZyYW1lKCk7CiAKLSAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2
YWx1ZSgpIGNvbnN0OworICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyYg
dmFsdWUoKSBjb25zdDsKIAogICAgIFBhc3NPd25QdHI8Q0NUcmFuc2Zvcm1LZXlmcmFtZT4gY2xv
bmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDQ1RyYW5zZm9ybUtleWZyYW1lKGRvdWJsZSB0
aW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc093blB0cjxDQ1RpbWlu
Z0Z1bmN0aW9uPik7CisgICAgQ0NUcmFuc2Zvcm1LZXlmcmFtZShkb3VibGUgdGltZSwgY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwgUGFzc093blB0cjxDQ1RpbWlu
Z0Z1bmN0aW9uPik7CiAKLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG1fdmFsdWU7CisgICAgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIG1fdmFsdWU7CiB9OwogCiBjbGFzcyBDQ0tleWZy
YW1lZEZsb2F0QW5pbWF0aW9uQ3VydmUgOiBwdWJsaWMgQ0NGbG9hdEFuaW1hdGlvbkN1cnZlIHsK
QEAgLTExNiw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDQW5p
bWF0aW9uQ3VydmU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBDQ1RyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdCwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0VmFsdWUoZG91YmxlIHQpIGNv
bnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0
aW9uQ3VydmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmNwcAppbmRleCAxNGZiNzhhNjVjMjU4MDI3NGVhZjY4OTAxZjUyZTRiZjc3YzU4YmJjLi4x
NWI2MTA2YzVlOTk2ZTgyNGJjYzRhZDIxY2ZkZDkxZWZlNDQ0YjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0zNSw5NCArMzUsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSB7Ci0KLXRlbXBsYXRlIDxjbGFz
cyBWYWx1ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1cnZlPgotdm9pZCBhcHBlbmRLZXlmcmFt
ZShDdXJ2ZSYgY3VydmUsIGRvdWJsZSBrZXlUaW1lLCBjb25zdCBWYWx1ZSogdmFsdWUsIFBhc3NP
d25QdHI8Q0NUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCi17Ci0gICAgY3VydmUuYWRk
S2V5ZnJhbWUoS2V5ZnJhbWU6OmNyZWF0ZShrZXlUaW1lLCB2YWx1ZS0+dmFsdWUoKSwgdGltaW5n
RnVuY3Rpb24pKTsKLX0KLQotdGVtcGxhdGUgPD4KLXZvaWQgYXBwZW5kS2V5ZnJhbWU8VHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUsIENDVHJhbnNmb3JtS2V5ZnJhbWUsIENDS2V5ZnJhbWVkVHJhbnNm
b3JtQW5pbWF0aW9uQ3VydmU+KENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUmIGN1
cnZlLCBkb3VibGUga2V5VGltZSwgY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqIHZhbHVl
LCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uKQotewotICAgIGN1
cnZlLmFkZEtleWZyYW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZShrZXlUaW1lLCAqdmFs
dWUtPnZhbHVlKCksIHRpbWluZ0Z1bmN0aW9uKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBWYWx1
ZSwgY2xhc3MgS2V5ZnJhbWUsIGNsYXNzIEN1cnZlPgotUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1h
dGlvbj4gY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBzaXplX3QgYW5pbWF0aW9uSWQsIHNp
emVfdCBncm91cElkLCBkb3VibGUgdGltZU9mZnNldCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdl
dFByb3BlcnR5IHRhcmdldFByb3BlcnR5KQotewotICAgIGJvb2wgYWx0ZXJuYXRlID0gZmFsc2U7
Ci0gICAgYm9vbCByZXZlcnNlID0gZmFsc2U7Ci0gICAgaWYgKGFuaW1hdGlvbiAmJiBhbmltYXRp
b24tPmlzRGlyZWN0aW9uU2V0KCkpIHsKLSAgICAgICAgQW5pbWF0aW9uOjpBbmltYXRpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uID0gYW5pbWF0aW9uLT5kaXJlY3Rpb24oKTsKLSAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSB8fCBkaXJl
Y3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKQot
ICAgICAgICAgICAgYWx0ZXJuYXRlID0gdHJ1ZTsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBB
bmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvblJldmVyc2UgfHwgZGlyZWN0aW9uID09IEFuaW1h
dGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSkKLSAgICAgICAgICAgIHJl
dmVyc2UgPSB0cnVlOwotICAgIH0KLQotICAgIE93blB0cjxDdXJ2ZT4gY3VydmUgPSBDdXJ2ZTo6
Y3JlYXRlKCk7Ci0gICAgVmVjdG9yPEtleWZyYW1lPiBrZXlmcmFtZXM7Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7IGkrKykgewotICAgICAgICBzaXplX3Qg
aW5kZXggPSByZXZlcnNlID8gdmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxIDogaTsKLQotICAgICAg
ICBjb25zdCBWYWx1ZSogb3JpZ2luYWxWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFZhbHVlKj4o
dmFsdWVMaXN0LmF0KGluZGV4KSk7Ci0KLSAgICAgICAgT3duUHRyPENDVGltaW5nRnVuY3Rpb24+
IHRpbWluZ0Z1bmN0aW9uOwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogb3JpZ2luYWxU
aW1pbmdGdW5jdGlvbiA9IG9yaWdpbmFsVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7Ci0KLSAgICAg
ICAgLy8gSWYgdGhlcmUgaGFzbid0IGJlZW4gYSB0aW1pbmcgZnVuY3Rpb24gYXNzb2NpYXRlZCB3
aXRoIHRoaXMga2V5ZnJhbWUsIHVzZSB0aGUKLSAgICAgICAgLy8gYW5pbWF0aW9uJ3MgdGltaW5n
IGZ1bmN0aW9uLCBpZiB3ZSBoYXZlIG9uZS4KLSAgICAgICAgaWYgKCFvcmlnaW5hbFRpbWluZ0Z1
bmN0aW9uICYmIGFuaW1hdGlvbi0+aXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICAgICAg
b3JpZ2luYWxUaW1pbmdGdW5jdGlvbiA9IGFuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQo
KTsKLQotICAgICAgICBpZiAob3JpZ2luYWxUaW1pbmdGdW5jdGlvbikgewotICAgICAgICAgICAg
c3dpdGNoIChvcmlnaW5hbFRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgVGltaW5nRnVuY3Rpb246OlN0ZXBzRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IGFkZCBzdXBwb3J0IGZvciBzdGVwcyB0aW1pbmcgZnVuY3Rpb24uCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpMaW5l
YXJGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBzZXQgdGhlIHRpbWluZyBmdW5j
dGlvbi4gS2V5ZnJhbWVzIGFyZSBpbnRlcnBvbGF0ZWQgbGluZWFybHkgaWYgdGhlcmUgaXMgbm8g
dGltaW5nIGZ1bmN0aW9uLgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBUaW1pbmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICBj
b25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBvcmlnaW5hbEJlemllclRpbWluZ0Z1bmN0
aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KG9yaWdp
bmFsVGltaW5nRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gQ0ND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUob3JpZ2luYWxCZXppZXJUaW1pbmdGdW5j
dGlvbi0+eDEoKSwgb3JpZ2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbi0+eTEoKSwgb3JpZ2luYWxC
ZXppZXJUaW1pbmdGdW5jdGlvbi0+eDIoKSwgb3JpZ2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbi0+
eTIoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IC8vIHN3aXRjaAot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gQ0NFYXNlVGltaW5n
RnVuY3Rpb246OmNyZWF0ZSgpOwotCi0gICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IChhbmltYXRp
b24gJiYgYW5pbWF0aW9uLT5pc0R1cmF0aW9uU2V0KCkpID8gYW5pbWF0aW9uLT5kdXJhdGlvbigp
IDogMTsKLSAgICAgICAgZG91YmxlIGtleVRpbWUgPSBvcmlnaW5hbFZhbHVlLT5rZXlUaW1lKCkg
KiBkdXJhdGlvbjsKLSAgICAgICAgaWYgKHJldmVyc2UpCi0gICAgICAgICAgICBrZXlUaW1lID0g
ZHVyYXRpb24gLSBrZXlUaW1lOwotICAgICAgICBhcHBlbmRLZXlmcmFtZTxWYWx1ZSwgS2V5ZnJh
bWUsIEN1cnZlPigqY3VydmUsIGtleVRpbWUsIG9yaWdpbmFsVmFsdWUsIHRpbWluZ0Z1bmN0aW9u
LnJlbGVhc2UoKSk7Ci0gICAgfQotCi0gICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBhbmlt
ID0gQ0NBY3RpdmVBbmltYXRpb246OmNyZWF0ZShjdXJ2ZS5yZWxlYXNlKCksIGFuaW1hdGlvbklk
LCBncm91cElkLCB0YXJnZXRQcm9wZXJ0eSk7Ci0KLSAgICBBU1NFUlQoYW5pbS5nZXQoKSk7Ci0K
LSAgICBpZiAoYW5pbS5nZXQoKSkgewotICAgICAgICBpbnQgaXRlcmF0aW9ucyA9IChhbmltYXRp
b24gJiYgYW5pbWF0aW9uLT5pc0l0ZXJhdGlvbkNvdW50U2V0KCkpID8gYW5pbWF0aW9uLT5pdGVy
YXRpb25Db3VudCgpIDogMTsKLSAgICAgICAgYW5pbS0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25z
KTsKLSAgICAgICAgYW5pbS0+c2V0QWx0ZXJuYXRlc0RpcmVjdGlvbihhbHRlcm5hdGUpOwotICAg
IH0KLQotICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHNrZXcsIHRoZSBtYWluIHRocmVhZCBhbmlt
YXRpb24gY2Fubm90IHRpY2sgdW50aWwgaXQgaGFzIHJlY2VpdmVkIHRoZSBzdGFydCB0aW1lIG9m
Ci0gICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgaW1wbCB0aHJlYWQgYW5pbWF0aW9uLgotICAgIGFu
aW0tPnNldE5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKHRydWUpOwotCi0gICAgLy8gSWYgdGlt
ZU9mZnNldCA+IDAsIHRoZW4gdGhlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBpbiB0aGUgcGFzdC4K
LSAgICBhbmltLT5zZXRUaW1lT2Zmc2V0KHRpbWVPZmZzZXQpOwotCi0gICAgcmV0dXJuIGFuaW0u
cmVsZWFzZSgpOwotfQotCi19IC8vIG5hbWVwYWNlCi0KIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcihDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ckNsaWVudCogY2xpZW50KQogICAgIDogbV9mb3JjZVN5bmMoZmFsc2UpCiAgICAgLCBtX2NsaWVu
dChjbGllbnQpCkBAIC0xMzgsMzIgKzUwLDYgQEAgUGFzc093blB0cjxDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcj4gQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZShDQ0xheWUKICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKGNsaWVudCkp
OwogfQogCi1ib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjphZGRBbmltYXRpb24oY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbWF0aW9uLCBpbnQgYW5pbWF0aW9uSWQsIGludCBncm91cElkLCBkb3VibGUg
dGltZU9mZnNldCkKLXsKLSAgICBpZiAoIWFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZDsKLSAgICBpZiAodmFsdWVM
aXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKLSAgICAg
ICAgdG9BZGQgPSBjcmVhdGVBY3RpdmVBbmltYXRpb248VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUs
IENDVHJhbnNmb3JtS2V5ZnJhbWUsIENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+
KHZhbHVlTGlzdCwgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwgdGltZU9mZnNldCwg
Q0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAgZWxzZSBpZiAodmFsdWVMaXN0LnBy
b3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpCi0gICAgICAgIHRvQWRkID0gY3Jl
YXRlQWN0aXZlQW5pbWF0aW9uPEZsb2F0QW5pbWF0aW9uVmFsdWUsIENDRmxvYXRLZXlmcmFtZSwg
Q0NLZXlmcmFtZWRGbG9hdEFuaW1hdGlvbkN1cnZlPih2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYW5p
bWF0aW9uSWQsIGdyb3VwSWQsIHRpbWVPZmZzZXQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5
KTsKLQotICAgIGlmICh0b0FkZC5nZXQoKSkgewotICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXN0
aW5nIGFuaW1hdGlvbnMgd2l0aCB0aGUgc2FtZSBhbmltYXRpb24gaWQgYW5kIHRhcmdldCBwcm9w
ZXJ0eS4KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpOykgewotICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+aWQoKSA9
PSBhbmltYXRpb25JZCAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkg
PT0gdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpCi0gICAgICAgICAgICAgICAgbV9hY3RpdmVBbmlt
YXRpb25zLnJlbW92ZShpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpKys7
Ci0gICAgICAgIH0KLSAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zLmFwcGVuZCh0b0FkZC5yZWxl
YXNlKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uKGlu
dCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKQEAgLTE4Miw2ICs2OCwx
NiBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpyZW1vdmVBbmltYXRpb24oaW50
IGFuaW1hdGlvbklkKQogICAgIH0KIH0KIAordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgQ0NBY3RpdmVBbmltYXRpb246OlRh
cmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTspIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+aWQoKSA9PSBhbmltYXRpb25JZCAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnRhcmdldFByb3BlcnR5KCkgPT0gdGFyZ2V0UHJvcGVydHkpCisgICAgICAgICAgICBtX2FjdGl2
ZUFuaW1hdGlvbnMucmVtb3ZlKGkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpKys7Cisg
ICAgfQorfQorCiAvLyBBY2NvcmRpbmcgdG8gcmVuZGVyIGxheWVyIGJhY2tpbmcsIHRoZXNlIGFy
ZSBmb3IgdGVzdGluZyBvbmx5Lgogdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3Vz
cGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiB7CkBAIC0yMjUsNyArMTIxLDcg
QEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0ZShkb3VibGUgbW9ub3Rv
bmljVGltZSwgQ0NBbmltYXRpb25FdmVudHMKICAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
VGFyZ2V0QXZhaWxhYmlsaXR5KG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CiB9CiAKLXZvaWQgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFkZChQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9u
PiBhbmltYXRpb24pCit2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjphZGRBbmltYXRp
b24oUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbWF0aW9uKQogewogICAgIG1fYWN0
aXZlQW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsKIH0KQEAgLTIzOCw2ICsxMzQsMTYgQEAg
Q0NBY3RpdmVBbmltYXRpb24qIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpnZXRBY3RpdmVB
bmltYXRpb24oaW50IGdyb3VwSWQsIEMKICAgICByZXR1cm4gMDsKIH0KIAorQ0NBY3RpdmVBbmlt
YXRpb24qIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpnZXRBY3RpdmVBbmltYXRpb24oQ0NB
Y3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5KSBjb25zdAorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCkgLSBp
IC0gMTsKKyAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpbmRleF0tPnRhcmdldFByb3Bl
cnR5KCkgPT0gdGFyZ2V0UHJvcGVydHkpCisgICAgICAgICAgICByZXR1cm4gbV9hY3RpdmVBbmlt
YXRpb25zW2luZGV4XS5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0CiB7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kp
IHsKQEAgLTI5Miw3ICsxOTgsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpw
dXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xheWVyQW5pbWF0aW9uQwogICAgICAgICAv
LyBUaGUgbmV3IGFuaW1hdGlvbiBzaG91bGQgYmUgc2V0IHRvIHJ1biBhcyBzb29uIGFzIHBvc3Np
YmxlLgogICAgICAgICB0b0FkZC0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OldhaXRp
bmdGb3JUYXJnZXRBdmFpbGFiaWxpdHksIDApOwogICAgICAgICB0b0FkZC0+c2V0U3RhcnRUaW1l
KDApOwotICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CisgICAg
ICAgIGNvbnRyb2xsZXJJbXBsLT5hZGRBbmltYXRpb24odG9BZGQucmVsZWFzZSgpKTsKICAgICB9
CiB9CiAKQEAgLTQ1OSw3ICszNjUsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
OjpyZXBsYWNlSW1wbFRocmVhZEFuaW1hdGlvbnMoQ0NMYXllckFuaW1hdGlvbkNvbgogICAgICAg
ICAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFy
Z2V0QXZhaWxhYmlsaXR5LCAwKTsKICAgICAgICAgICAgIHRvQWRkLT5zZXRTdGFydFRpbWUoMCk7
CiAgICAgICAgIH0KLSAgICAgICAgY29udHJvbGxlckltcGwtPmFkZCh0b0FkZC5yZWxlYXNlKCkp
OworICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkQW5pbWF0aW9uKHRvQWRkLnJlbGVhc2UoKSk7
CiAgICAgfQogfQogCkBAIC00NzgsNyArMzg0LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcjo6dGlja0FuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAKICAgICAgICAg
ICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTogewogICAgICAgICAgICAgICAg
IGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZl
ID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT5jdXJ2ZSgpLT50b1RyYW5zZm9ybUFuaW1hdGlvbkN1
cnZlKCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4
ID0gdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZhbHVlKHRyaW1tZWQsIG1fY2xpZW50LT5i
b3VuZHMoKSk7CisgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4ID0gdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUtPmdldFZhbHVlKHRyaW1tZWQpOwogICAgICAg
ICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlzRmluaXNoZWRBdChtb25vdG9u
aWNUaW1lKSkKICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRS
dW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6RmluaXNoZWQsIG1vbm90b25pY1RpbWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAppbmRleCBhYzcy
ODdmNzExZTIzMDNhYTA5M2E3MTJjNWM1OTFhMTBlMzFjM2U0Li5iYWE0YWMzZGRhYTAzOGJlMWUx
MTJhMzE0MjUyN2E5YjIyYzRiNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
ZmxvYXQgb3BhY2l0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3Jt
RnJvbUFuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAgICB2aXJ0
dWFsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBib3VuZHMoKSBjb25zdCA9IDA7CiB9OwogCiBjbGFz
cyBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciB7CkBAIC02MSw5ICs2MCwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHZpcnR1YWwgZm9yIHRlc3RpbmcuCi0gICAgdmlydHVhbCBib29sIGFk
ZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNp
emUsIGNvbnN0IEFuaW1hdGlvbiosIGludCBhbmltYXRpb25JZCwgaW50IGdyb3VwSWQsIGRvdWJs
ZSB0aW1lT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9uKFBhc3NPd25QdHI8
Q0NBY3RpdmVBbmltYXRpb24+KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oaW50
IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmlt
YXRpb24oaW50IGFuaW1hdGlvbklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkp
OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1Rp
bWUpOwogCkBAIC03MywxMiArNzMsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBhbmltYXRlKGRv
dWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwogCi0gICAgdm9p
ZCBhZGQoUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4pOwotCi0gICAgLy8gUmV0dXJucyB0
aGUgYWN0aXZlIGFuaW1hdGlvbiBpbiB0aGUgZ2l2ZW4gZ3JvdXAsIGFuaW1hdGluZyB0aGUgZ2l2
ZW4gcHJvcGVydHkgaWYgc3VjaCBhbgorICAgIC8vIFJldHVybnMgdGhlIGFjdGl2ZSBhbmltYXRp
b24gaW4gdGhlIGdpdmVuIGdyb3VwLCBhbmltYXRpbmcgdGhlIGdpdmVuIHByb3BlcnR5LCBpZiBz
dWNoIGFuCiAgICAgLy8gYW5pbWF0aW9uIGV4aXN0cy4KICAgICBDQ0FjdGl2ZUFuaW1hdGlvbiog
Z2V0QWN0aXZlQW5pbWF0aW9uKGludCBncm91cElkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0
UHJvcGVydHkpIGNvbnN0OwogCisgICAgLy8gUmV0dXJucyB0aGUgYWN0aXZlIGFuaW1hdGlvbiBh
bmltYXRpbmcgdGhlIGdpdmVuIHByb3BlcnR5IHRoYXQgaXMgZWl0aGVyIHJ1bm5pbmcsIG9yIGlz
CisgICAgLy8gbmV4dCB0byBydW4sIGlmIHN1Y2ggYW4gYW5pbWF0aW9uIGV4aXN0cy4KKyAgICBD
Q0FjdGl2ZUFuaW1hdGlvbiogZ2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSkgY29uc3Q7CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJl
IGFueSBhbmltYXRpb25zIHRoYXQgaGF2ZSBuZWl0aGVyIGZpbmlzaGVkIG5vciBhYm9ydGVkLgog
ICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcAppbmRleCAz
NmY3OTgxOGVmMDllODM4Y2M5ODI3YjhmYTE2MjU4ODE5NTBkYTQyLi4xNDE0YjhjYTVjNDAzMzI3
OTk2ZDdiZmU5NDRjNDM4MDVjYTc3ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwCkBAIC0yOSw5ICsyOSwxMiBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiY2Mv
Q0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKIAorI2luY2x1ZGUg
PHB1YmxpYy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmg+CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgewpAQCAtMzksMzggKzQyLDM4IEBAIG5hbWVzcGFjZSB7CiB0ZW1w
bGF0ZSA8Y2xhc3MgVGFyZ2V0Pgogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvbihUYXJnZXQmIHRh
cmdldCwgZG91YmxlIGR1cmF0aW9uLCBmbG9hdCBzdGFydE9wYWNpdHksIGZsb2F0IGVuZE9wYWNp
dHksIGJvb2wgdXNlVGltaW5nRnVuY3Rpb24pCiB7Ci0gICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1
ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBpZiAoZHVyYXRpb24g
PiAwKQotICAgICAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDAsIHN0
YXJ0T3BhY2l0eSkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUo
ZHVyYXRpb24sIGVuZE9wYWNpdHkpKTsKKyAgICBPd25QdHI8Q0NLZXlmcmFtZWRGbG9hdEFuaW1h
dGlvbkN1cnZlPiBjdXJ2ZShDQ0tleWZyYW1lZEZsb2F0QW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgp
KTsKIAotICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRl
KCk7Ci0gICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0KLSAgICBpZiAodXNl
VGltaW5nRnVuY3Rpb24pCi0gICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGlu
ZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKKyAgICBpZiAoZHVyYXRpb24gPiAwKQorICAg
ICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NGbG9hdEtleWZyYW1lOjpjcmVhdGUoMCwgc3RhcnRP
cGFjaXR5LCB1c2VUaW1pbmdGdW5jdGlvbiA/IG51bGxwdHIgOiBDQ0Vhc2VUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCkpKTsKKyAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NGbG9hdEtleWZyYW1lOjpj
cmVhdGUoZHVyYXRpb24sIGVuZE9wYWNpdHksIG51bGxwdHIpKTsKIAotICAgIEludFNpemUgYm94
U2l6ZTsKKyAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1hdGlvbihDQ0FjdGl2ZUFu
aW1hdGlvbjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgMCwgMCwgQ0NBY3RpdmVBbmltYXRpb246
Ok9wYWNpdHkpKTsKKyAgICBhbmltYXRpb24tPnNldE5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1l
KHRydWUpOwogCi0gICAgdGFyZ2V0LmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1h
dGlvbi5nZXQoKSwgMCwgMCwgMCk7CisgICAgdGFyZ2V0LmFkZEFuaW1hdGlvbihhbmltYXRpb24u
cmVsZWFzZSgpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFRhcmdldD4KIHZvaWQgYWRkQW5pbWF0
ZWRUcmFuc2Zvcm0oVGFyZ2V0JiB0YXJnZXQsIGRvdWJsZSBkdXJhdGlvbiwgaW50IGRlbHRhWCwg
aW50IGRlbHRhWSkKIHsKICAgICBzdGF0aWMgaW50IGlkID0gMDsKLSAgICBXZWJDb3JlOjpLZXlm
cmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Cisg
ICAgT3duUHRyPENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+IGN1cnZlKENDS2V5
ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKIAotICAgIFRyYW5zZm9y
bU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGRlbHRhWCwgV2Vi
Q29yZTo6Rml4ZWQpLCBMZW5ndGgoZGVsdGFZLCBXZWJDb3JlOjpGaXhlZCksIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9ucykpOworICAgIGlmIChkdXJhdGlvbiA+IDApIHsK
KyAgICAgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIHN0YXJ0T3BlcmF0aW9uczsK
KyAgICAgICAgc3RhcnRPcGVyYXRpb25zLmFwcGVuZFRyYW5zbGF0ZShkZWx0YVgsIGRlbHRhWSwg
MCk7CisgICAgICAgIGN1cnZlLT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVh
dGUoMCwgc3RhcnRPcGVyYXRpb25zLCBudWxscHRyKSk7CisgICAgfQogCi0gICAgUmVmUHRyPEFu
aW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKLSAgICBhbmltYXRpb24t
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlv
bnMgb3BlcmF0aW9uczsKKyAgICBvcGVyYXRpb25zLmFwcGVuZFRyYW5zbGF0ZShkZWx0YVgsIGRl
bHRhWSwgMCk7CisgICAgY3VydmUtPmFkZEtleWZyYW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNy
ZWF0ZShkdXJhdGlvbiwgb3BlcmF0aW9ucywgbnVsbHB0cikpOwogCi0gICAgSW50U2l6ZSBib3hT
aXplOworICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbWF0aW9uKENDQWN0aXZlQW5p
bWF0aW9uOjpjcmVhdGUoY3VydmUucmVsZWFzZSgpLCBpZCsrLCAwLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6VHJhbnNmb3JtKSk7CisgICAgYW5pbWF0aW9uLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0
VGltZSh0cnVlKTsKIAotICAgIHRhcmdldC5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBh
bmltYXRpb24uZ2V0KCksICsraWQsIDAsIDApOworICAgIHRhcmdldC5hZGRBbmltYXRpb24oYW5p
bWF0aW9uLnJlbGVhc2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCkBAIC05OSw3ICsxMDIsNyBA
QCBGYWtlVHJhbnNmb3JtVHJhbnNpdGlvbjo6fkZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKCkKIHsK
IH0KIAotV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggRmFrZVRyYW5zZm9ybVRyYW5zaXRp
b246OmdldFZhbHVlKGRvdWJsZSB0aW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSBj
b25zdAorV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggRmFrZVRyYW5zZm9ybVRyYW5zaXRp
b246OmdldFZhbHVlKGRvdWJsZSB0aW1lKSBjb25zdAogewogICAgIHJldHVybiBXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgKaW5kZXggNzc2Yjc1YzhkNmY2ZWFlNDlj
YjJjMjhlZThkNjNjMjFiZTEyMzgzNC4uOTY3ZGQ4MThkZDU2YjhiY2JjZjdhYmM4Y2E0NmY4OTNi
NzBhM2RjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1h
dGlvblRlc3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5p
bWF0aW9uVGVzdENvbW1vbi5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5GYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigpOwogCiAgICAgdmlydHVhbCBkb3VibGUgZHVyYXRp
b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2R1cmF0aW9uOyB9Ci0gICAgdmlydHVhbCBX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdGltZSwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0VmFsdWUoZG91YmxlIHRpbWUpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNDQW5pbWF0aW9uQ3VydmU+IGNs
b25lKCkgY29uc3QgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKaW5kZXgg
MTViNTU0YTA2OTA1NzUyZjFiZGVmY2I4YWViYjg3MjhmZWVmYTU1YS4uNWFjNzI3Y2I1NzM5ZDQ1
N2NkMjk5ZGNhN2ExMDNlM2I5ZDkwZjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAg
LTExMyw1NyArMTE0LDU1IEBAIFRFU1QoQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3QsIFJl
cGVhdGVkRmxvYXRLZXlUaW1lcykKIFRFU1QoQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3Qs
IE9uZVRyYW5zZm9ybUtleWZyYW1lKQogewogICAgIE93blB0cjxDQ0tleWZyYW1lZFRyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZShDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZl
OjpjcmVhdGUoKSk7Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAgIG9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShMZW5ndGgoMiwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YKSk7CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnM7CisgICAgb3BlcmF0aW9ucy5hcHBlbmRUcmFuc2xhdGUoMiwgMCwgMCk7CiAg
ICAgY3VydmUtPmFkZEtleWZyYW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgwLCBvcGVy
YXRpb25zLCBudWxscHRyKSk7CiAKLSAgICBJbnRTaXplIGxheWVyU2l6ZTsgLy8gaWdub3JlZAot
ICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKC0xLCBsYXllclNpemUpKTsK
LSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLCBsYXllclNpemUpKTsK
LSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLjUsIGxheWVyU2l6ZSkp
OwotICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKDEsIGxheWVyU2l6ZSkp
OwotICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKDIsIGxheWVyU2l6ZSkp
OworICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKC0xKSk7CisgICAgZXhw
ZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOworICAgIGV4cGVjdFRyYW5zbGF0
ZVgoMiwgY3VydmUtPmdldFZhbHVlKDAuNSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3Vy
dmUtPmdldFZhbHVlKDEpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1
ZSgyKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgYSB0cmFuc2Zvcm0gYW5pbWF0aW9uIHdpdGggdHdv
IGtleWZyYW1lcyB3b3JrcyBhcyBleHBlY3RlZC4KIFRFU1QoQ0NLZXlmcmFtZWRBbmltYXRpb25D
dXJ2ZVRlc3QsIFR3b1RyYW5zZm9ybUtleWZyYW1lKQogewogICAgIE93blB0cjxDQ0tleWZyYW1l
ZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZShDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlOjpjcmVhdGUoKSk7Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25z
MTsKLSAgICBvcGVyYXRpb25zMS5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgyLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMyOwotICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAs
IEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBvcGVyYXRpb25zMS5hcHBl
bmRUcmFuc2xhdGUoMiwgMCwgMCk7CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlvbnMyLmFwcGVuZFRyYW5zbGF0ZSg0LCAwLCAwKTsK
KwogICAgIGN1cnZlLT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUoMCwg
b3BlcmF0aW9uczEsIG51bGxwdHIpKTsKICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NUcmFuc2Zv
cm1LZXlmcmFtZTo6Y3JlYXRlKDEsIG9wZXJhdGlvbnMyLCBudWxscHRyKSk7Ci0gICAgSW50U2l6
ZSBsYXllclNpemU7IC8vIGlnbm9yZWQKLSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5n
ZXRWYWx1ZSgtMSwgbGF5ZXJTaXplKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+
Z2V0VmFsdWUoMCwgbGF5ZXJTaXplKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCgzLCBjdXJ2ZS0+
Z2V0VmFsdWUoMC41LCBsYXllclNpemUpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZl
LT5nZXRWYWx1ZSgxLCBsYXllclNpemUpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZl
LT5nZXRWYWx1ZSgyLCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZl
LT5nZXRWYWx1ZSgtMSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVl
KDApKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDMsIGN1cnZlLT5nZXRWYWx1ZSgwLjUpKTsKKyAg
ICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgxKSk7CisgICAgZXhwZWN0VHJh
bnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMikpOwogfQogCiAvLyBUZXN0cyB0aGF0IGEgdHJh
bnNmb3JtIGFuaW1hdGlvbiB3aXRoIHRocmVlIGtleWZyYW1lcyB3b3JrcyBhcyBleHBlY3RlZC4K
IFRFU1QoQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3QsIFRocmVlVHJhbnNmb3JtS2V5ZnJh
bWUpCiB7CiAgICAgT3duUHRyPENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU+IGN1
cnZlKENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKLSAgICBU
cmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlv
bnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIs
IEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WCkpOwotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7Ci0gICAgb3BlcmF0aW9u
czIub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShMZW5ndGgoNCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9YKSk7Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMzsKLSAg
ICBvcGVyYXRpb25zMy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCg4LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJh
dGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEuYXBwZW5kVHJhbnNsYXRlKDIsIDAs
IDApOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAg
ICBvcGVyYXRpb25zMi5hcHBlbmRUcmFuc2xhdGUoNCwgMCwgMCk7CisgICAgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMzOworICAgIG9wZXJhdGlvbnMzLmFwcGVuZFRy
YW5zbGF0ZSg4LCAwLCAwKTsKICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NUcmFuc2Zvcm1LZXlm
cmFtZTo6Y3JlYXRlKDAsIG9wZXJhdGlvbnMxLCBudWxscHRyKSk7CiAgICAgY3VydmUtPmFkZEtl
eWZyYW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgxLCBvcGVyYXRpb25zMiwgbnVsbHB0
cikpOwogICAgIGN1cnZlLT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUo
Miwgb3BlcmF0aW9uczMsIG51bGxwdHIpKTsKLSAgICBJbnRTaXplIGxheWVyU2l6ZTsgLy8gaWdu
b3JlZAotICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKC0xLCBsYXllclNp
emUpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLCBsYXllclNp
emUpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDMsIGN1cnZlLT5nZXRWYWx1ZSgwLjUsIGxheWVy
U2l6ZSkpOwotICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKDEsIGxheWVy
U2l6ZSkpOwotICAgIGV4cGVjdFRyYW5zbGF0ZVgoNiwgY3VydmUtPmdldFZhbHVlKDEuNSwgbGF5
ZXJTaXplKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCg4LCBjdXJ2ZS0+Z2V0VmFsdWUoMiwgbGF5
ZXJTaXplKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCg4LCBjdXJ2ZS0+Z2V0VmFsdWUoMywgbGF5
ZXJTaXplKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoLTEpKTsK
KyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7CisgICAgZXhwZWN0
VHJhbnNsYXRlWCgzLCBjdXJ2ZS0+Z2V0VmFsdWUoMC41KSk7CisgICAgZXhwZWN0VHJhbnNsYXRl
WCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoNiwgY3VydmUt
PmdldFZhbHVlKDEuNSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoOCwgY3VydmUtPmdldFZhbHVl
KDIpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDgsIGN1cnZlLT5nZXRWYWx1ZSgzKSk7CiB9CiAK
IC8vIFRlc3RzIHRoYXQgYSB0cmFuc2Zvcm0gYW5pbWF0aW9uIHdpdGggbXVsdGlwbGUga2V5cyBh
dCBhIGdpdmVuIHRpbWUgd29ya3Mgc2FuZWx5LgpAQCAtMTcxLDM0ICsxNzAsMzIgQEAgVEVTVChD
Q0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdCwgUmVwZWF0ZWRUcmFuc2Zvcm1LZXlUaW1lcykK
IHsKICAgICBPd25QdHI8Q0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4gY3VydmUo
Q0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOwogICAgIC8vIEEg
c3RlcCBmdW5jdGlvbi4KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAg
IG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0
aW9uczI7Ci0gICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoNCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQp
LCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7Ci0gICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBvcGVyYXRpb25zMzsKLSAgICBvcGVyYXRpb25zMy5vcGVyYXRpb25zKCkuYXBwZW5kKFRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg2LCBGaXhlZCksIExlbmd0
aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM0OwotICAgIG9wZXJhdGlvbnM0Lm9wZXJhdGlvbnMo
KS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDYsIEZp
eGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkp
OworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBv
cGVyYXRpb25zMS5hcHBlbmRUcmFuc2xhdGUoNCwgMCwgMCk7CisgICAgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlvbnMyLmFwcGVuZFRyYW5z
bGF0ZSg0LCAwLCAwKTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0
aW9uczM7CisgICAgb3BlcmF0aW9uczMuYXBwZW5kVHJhbnNsYXRlKDYsIDAsIDApOworICAgIFdl
YktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zNDsKKyAgICBvcGVyYXRpb25z
NC5hcHBlbmRUcmFuc2xhdGUoNiwgMCwgMCk7CiAgICAgY3VydmUtPmFkZEtleWZyYW1lKENDVHJh
bnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgwLCBvcGVyYXRpb25zMSwgbnVsbHB0cikpOwogICAgIGN1
cnZlLT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUoMSwgb3BlcmF0aW9u
czIsIG51bGxwdHIpKTsKICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NUcmFuc2Zvcm1LZXlmcmFt
ZTo6Y3JlYXRlKDEsIG9wZXJhdGlvbnMzLCBudWxscHRyKSk7CiAgICAgY3VydmUtPmFkZEtleWZy
YW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgyLCBvcGVyYXRpb25zNCwgbnVsbHB0cikp
OwogCi0gICAgSW50U2l6ZSBsYXllclNpemU7IC8vIGlnbm9yZWQKLQotICAgIGV4cGVjdFRyYW5z
bGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKC0xLCBsYXllclNpemUpKTsKLSAgICBleHBlY3RUcmFu
c2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgwLCBsYXllclNpemUpKTsKLSAgICBleHBlY3RUcmFu
c2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgwLjUsIGxheWVyU2l6ZSkpOworICAgIGV4cGVjdFRy
YW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKC0xKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCg0
LCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUtPmdl
dFZhbHVlKDAuNSkpOwogCiAgICAgLy8gVGhlcmUgaXMgYSBkaXNjb250aW51aXR5IGF0IDEuIEFu
eSB2YWx1ZSBiZXR3ZWVuIDQgYW5kIDYgaXMgdmFsaWQuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdmFsdWUgPSBjdXJ2ZS0+Z2V0VmFsdWUoMSwgbGF5ZXJTaXplKTsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB2YWx1ZSA9IGN1cnZlLT5nZXRWYWx1ZSgxKTsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFR5cGU7CiAgICAgdmFsdWUuZGVjb21w
b3NlKGRlY29tcG9zZWRUeXBlKTsKICAgICBFWFBFQ1RfVFJVRShkZWNvbXBvc2VkVHlwZS50cmFu
c2xhdGVYID49IDQgJiYgZGVjb21wb3NlZFR5cGUudHJhbnNsYXRlWCA8PSA2KTsKIAotICAgIGV4
cGVjdFRyYW5zbGF0ZVgoNiwgY3VydmUtPmdldFZhbHVlKDEuNSwgbGF5ZXJTaXplKSk7Ci0gICAg
ZXhwZWN0VHJhbnNsYXRlWCg2LCBjdXJ2ZS0+Z2V0VmFsdWUoMiwgbGF5ZXJTaXplKSk7Ci0gICAg
ZXhwZWN0VHJhbnNsYXRlWCg2LCBjdXJ2ZS0+Z2V0VmFsdWUoMywgbGF5ZXJTaXplKSk7CisgICAg
ZXhwZWN0VHJhbnNsYXRlWCg2LCBjdXJ2ZS0+Z2V0VmFsdWUoMS41KSk7CisgICAgZXhwZWN0VHJh
bnNsYXRlWCg2LCBjdXJ2ZS0+Z2V0VmFsdWUoMikpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoNiwg
Y3VydmUtPmdldFZhbHVlKDMpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCB0aGUga2V5ZnJhbWVzIG1h
eSBiZSBhZGRlZCBvdXQgb2Ygb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKaW5k
ZXggODI3MTk0YmJjNDE1MzZmMmZhYzM0OTFkM2Q1MWU0NDg4YTExNDJmNi4uMDJhZTUwNDQ5YTU3
MDM3NDc1OWI1Yjk4YzA1ZWUwZjQzODM0Y2Q1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0
LmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNs
dWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0FjdGl2
ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uQ3VydmUuaCIKIApAQCAtNDIs
MjA5ICs0MSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIG5hbWVzcGFjZSB7
CiAKLXZvaWQgZXhwZWN0VHJhbnNsYXRlWChkb3VibGUgdHJhbnNsYXRlWCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6RGVj
b21wb3NlZFR5cGUgZGVjb21wb3NlZFR5cGU7Ci0gICAgbWF0cml4LmRlY29tcG9zZShkZWNvbXBv
c2VkVHlwZSk7Ci0gICAgRVhQRUNUX0ZMT0FUX0VRKHRyYW5zbGF0ZVgsIGRlY29tcG9zZWRUeXBl
LnRyYW5zbGF0ZVgpOwotfQotCiBQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBjcmVhdGVB
Y3RpdmVBbmltYXRpb24oUGFzc093blB0cjxDQ0FuaW1hdGlvbkN1cnZlPiBjdXJ2ZSwgaW50IGlk
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgcHJvcGVydHkpCiB7CiAgICAgcmV0
dXJuIENDQWN0aXZlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUsIDAsIGlkLCBwcm9wZXJ0eSk7CiB9
CiAKLVRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBjcmVhdGVPcGFjaXR5QW5p
bWF0aW9uKQotewotICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7
Ci0gICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7Ci0gICAgY29uc3QgZG91Ymxl
IGR1cmF0aW9uID0gMTsKLSAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0
aW9uVmFsdWUoMCwgMCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFs
dWUoZHVyYXRpb24sIDEpKTsKLQotICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFu
aW1hdGlvbjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
Ci0KLSAgICBJbnRTaXplIGJveFNpemU7Ci0gICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHZh
bHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAwLCAwLCAwKTsKLQotICAgIEVYUEVDVF9U
UlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQotICAgIENDQWN0aXZlQW5p
bWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24o
MCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpOwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFu
aW1hdGlvbik7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25z
KCkpOwotICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSwgYWN0aXZlQW5p
bWF0aW9uLT50YXJnZXRQcm9wZXJ0eSgpKTsKLQotICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1
cnZlOjpGbG9hdCwgYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29u
c3QgQ0NGbG9hdEFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUo
KS0+dG9GbG9hdEFuaW1hdGlvbkN1cnZlKCk7Ci0gICAgRVhQRUNUX1RSVUUoY3VydmUpOwotCi0g
ICAgRVhQRUNUX0VRKDAsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGN1
cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOwotfQotCi1URVNUKENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uKQotewotICAgIEZha2VMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7Ci0gICAgT3duUHRyPENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVh
dGUoJmR1bW15KSk7Ci0gICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsKLSAgICBXZWJDb3Jl
OjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlv
bnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDIsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKDAsICZvcGVyYXRpb25zMSkpOwotCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zMjsKLSAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBGaXhlZCksIExlbmd0aCgwLCBGaXhl
ZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0
KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7Ci0K
LSAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwot
ICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotCi0gICAgSW50U2l6ZSBib3hT
aXplOwotICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1h
dGlvbi5nZXQoKSwgMCwgMCwgMCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNB
Y3RpdmVBbmltYXRpb24oKSk7Ci0KLSAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0
aW9uID0gY29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9u
OjpUcmFuc2Zvcm0pOwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7Ci0KLSAgICBF
WFBFQ1RfRVEoMSwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwotICAgIEVYUEVDVF9F
UShDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFBy
b3BlcnR5KCkpOwotCi0gICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwg
YWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29uc3QgQ0NUcmFuc2Zv
cm1BbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJh
bnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0KLSAgICBl
eHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLCBib3hTaXplKSk7Ci0gICAgZXhw
ZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24sIGJveFNpemUpKTsKLX0K
LQotVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGNyZWF0ZVJldmVyc2VkQW5p
bWF0aW9uKQotewotICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7
Ci0gICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7Ci0gICAgY29uc3QgZG91Ymxl
IGR1cmF0aW9uID0gMTsKLSAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5p
bWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIEZpeGVkKSwgTGVuZ3RoKDAs
IEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVlcy5p
bnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOwotCi0g
ICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKLSAgICBvcGVyYXRpb25zMi5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0
aCg0LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShk
dXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7Ci0KLSAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRp
b24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVy
YXRpb24pOwotICAgIGFuaW1hdGlvbi0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9u
RGlyZWN0aW9uUmV2ZXJzZSk7Ci0KLSAgICBJbnRTaXplIGJveFNpemU7Ci0gICAgY29udHJvbGxl
ci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAwLCAwLCAw
KTsKLQotICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsK
LQotICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBjb250cm9sbGVyLT5n
ZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAg
RVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLQotICAgIEVYUEVDVF9FUSgxLCBhY3RpdmVB
bmltYXRpb24tPml0ZXJhdGlvbnMoKSk7Ci0gICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9u
OjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0KLSAgICBF
WFBFQ1RfRVEoQ0NBbmltYXRpb25DdXJ2ZTo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1
cnZlKCktPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBj
dXJ2ZSA9IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2
ZSgpOwotICAgIEVYUEVDVF9UUlVFKGN1cnZlKTsKLQotICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwg
Y3VydmUtPmdldFZhbHVlKDAsIGJveFNpemUpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1
cnZlLT5nZXRWYWx1ZShkdXJhdGlvbiwgYm94U2l6ZSkpOwotfQotCi1URVNUKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyVGVzdCwgY3JlYXRlQWx0ZXJuYXRpbmdBbmltYXRpb24pCi17Ci0gICAg
RmFrZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCBkdW1teTsKLSAgICBPd25QdHI8Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKLSAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOwot
ICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7Ci0g
ICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OmNyZWF0ZShMZW5ndGgoMiwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIG9wZXJhdGlvbnMyOwotICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQo
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVu
Z3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZh
bHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0
aW9uczIpKTsKLQotICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6
Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0gICAgYW5p
bWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5h
dGUpOwotICAgIGFuaW1hdGlvbi0+c2V0SXRlcmF0aW9uQ291bnQoMik7Ci0KLSAgICBJbnRTaXpl
IGJveFNpemU7Ci0gICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwg
YW5pbWF0aW9uLmdldCgpLCAwLCAwLCAwKTsKLQotICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXIt
Pmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQotICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVB
bmltYXRpb24gPSBjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmlt
YXRpb246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLSAg
ICBFWFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24tPmFsdGVybmF0ZXNEaXJlY3Rpb24oKSk7Ci0K
LSAgICBFWFBFQ1RfRVEoMiwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwotICAgIEVY
UEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRh
cmdldFByb3BlcnR5KCkpOwotCi0gICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5z
Zm9ybSwgYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29uc3QgQ0NU
cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCkt
PnRvVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0K
LSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLCBib3hTaXplKSk7Ci0g
ICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24sIGJveFNpemUp
KTsKLX0KLQotVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGNyZWF0ZVJldmVy
c2VkQWx0ZXJuYXRpbmdBbmltYXRpb24pCi17Ci0gICAgRmFrZUxheWVyQW5pbWF0aW9uQ29udHJv
bGxlckNsaWVudCBkdW1teTsKLSAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+
IGNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsK
LSAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOwotICAgIFdlYkNvcmU6OktleWZyYW1lVmFs
dWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7Ci0gICAgb3BlcmF0aW9uczEub3BlcmF0aW9u
cygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwg
Rml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9Y
KSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9w
ZXJhdGlvbnMxKSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOwotICAg
IG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKLQotICAgIFJlZlB0cjxB
bmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9u
LT5zZXREdXJhdGlvbihkdXJhdGlvbik7Ci0gICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5p
bWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKLSAgICBhbmltYXRp
b24tPnNldEl0ZXJhdGlvbkNvdW50KDIpOwotCi0gICAgSW50U2l6ZSBib3hTaXplOwotICAgIGNv
bnRyb2xsZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwg
MCwgMCwgMCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRp
b24oKSk7Ci0KLSAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gY29udHJv
bGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0p
OwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7Ci0gICAgRVhQRUNUX1RSVUUoYWN0
aXZlQW5pbWF0aW9uLT5hbHRlcm5hdGVzRGlyZWN0aW9uKCkpOwotCi0gICAgRVhQRUNUX0VRKDIs
IGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsKLSAgICBFWFBFQ1RfRVEoQ0NBY3RpdmVB
bmltYXRpb246OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQcm9wZXJ0eSgpKTsK
LQotICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1h
dGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKLQotICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9u
Q3VydmUqIGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b1RyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlKCk7Ci0gICAgRVhQRUNUX1RSVUUoY3VydmUpOwotCi0gICAgZXhwZWN0VHJhbnNs
YXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMCwgYm94U2l6ZSkpOwotICAgIGV4cGVjdFRyYW5zbGF0
ZVgoMiwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uLCBib3hTaXplKSk7Ci19Ci0KIFRFU1QoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBzeW5jTmV3QW5pbWF0aW9uKQogewogICAgIEZh
a2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXlJbXBsOwpAQCAtMzMzLDcgKzEz
NCw2IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBzeW5jUGF1c2VBbmRS
ZXN1bWUpCiAgICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBjb250cm9s
bGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5
KS0+cnVuU3RhdGUoKSk7CiB9CiAKLQogVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRl
c3QsIGRvTm90U3luY0ZpbmlzaGVkQW5pbWF0aW9uKQogewogICAgIEZha2VMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJDbGllbnQgZHVtbXlJbXBsOwpAQCAtMzc1LDcgKzE3NSw3IEBAIFRFU1QoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBUcml2aWFsVHJhbnNpdGlvbikKIAogICAgIE93
blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0
UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwor
ICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOwogICAgIGNvbnRy
b2xsZXItPmFuaW1hdGUoMCwgZXZlbnRzLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9s
bGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNp
dHkoKSk7CkBAIC0zOTYsNyArMTk2LDcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
clRlc3QsIEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lRG9Ob3RGaW5pc2hJZlQKICAgICB0
b0FkZC0+c2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUodHJ1ZSk7CiAKICAgICAvLyBXZSBz
aG91bGQgcGF1c2UgYXQgdGhlIGZpcnN0IGtleWZyYW1lIGluZGVmaW5pdGVseSB3YWl0aW5nIGZv
ciB0aGF0IGFuaW1hdGlvbiB0byBzdGFydC4KLSAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVs
ZWFzZSgpKTsKKyAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24odG9BZGQucmVsZWFzZSgpKTsK
ICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7CiAgICAgRVhQRUNUX1RS
VUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBk
dW1teS5vcGFjaXR5KCkpOwpAQCAtNDIyLDggKzIyMiw4IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJUZXN0LCBUcml2aWFsUXVldWluZykKICAgICBPd25QdHI8Q0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXIoCiAgICAgICAgIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7CiAKLSAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0
aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwg
MSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKLSAgICBjb250cm9sbGVyLT5hZGQoY3Jl
YXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEs
IDAuNSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRyb2xsZXIt
PmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9h
dFRyYW5zaXRpb24oMSwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwor
ICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQ
dHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMSwgMC41KSksIDIsIENDQWN0aXZlQW5pbWF0
aW9uOjpPcGFjaXR5KSk7CiAKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQo
KSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwpA
QCAtNDQzLDE0ICsyNDMsMTQgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3Qs
IEludGVycnVwdCkKICAgICBGYWtlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IGR1bW15
OwogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gY29udHJvbGxlcigKICAg
ICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKLSAgICBj
b250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxv
YXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsK
KyAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0
UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRp
b246Ok9wYWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7
CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAg
IEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgT3duUHRyPENDQWN0aXZlQW5p
bWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9h
dFRyYW5zaXRpb24oMSwgMSwgMC41KSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7
CiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yTmV4
dFRpY2ssIDApOwotICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOworICAgIGNv
bnRyb2xsZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOwogCiAgICAgLy8gU2luY2Ug
dGhlIGFuaW1hdGlvbiB3YXMgaW4gdGhlIFdhaXRpbmdGb3JOZXh0VGljayBzdGF0ZSwgaXQgc2hv
dWxkIHN0YXJ0IHJpZ2h0IGluCiAgICAgLy8gdGhpcyBjYWxsIHRvIGFuaW1hdGUuCkBAIC00NzAs
OSArMjcwLDkgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIFNjaGVkdWxl
VG9nZXRoZXJXaGVuQVByb3BlcnR5SXNCbG9ja2VkKQogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcj4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3Rp
dmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwgMSwg
Q0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwotICAgIGNvbnRyb2xsZXItPmFkZChjcmVh
dGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEp
KSwgMiwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwotICAgIGNvbnRyb2xsZXItPmFk
ZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24o
MSwgMCwgMSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRyb2xs
ZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VU
cmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkp
OworICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRv
cHRQdHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwgMiwgQ0NBY3RpdmVBbmltYXRp
b246OlRyYW5zZm9ybSkpOworICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3Rp
dmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAy
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgY29udHJvbGxlci0+YW5pbWF0
ZSgwLCBldmVudHMuZ2V0KCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwpA
QCAtNDk3LDkgKzI5Nyw5IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBT
Y2hlZHVsZVRvZ2V0aGVyV2l0aEFuQW5pbVdhaXRpbmcpCiAgICAgT3duUHRyPENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKAogICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcjo6Y3JlYXRlKCZkdW1teSkpOwogCi0gICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFj
dGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZVRyYW5zZm9ybVRyYW5zaXRpb24oMikpLCAx
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtKSk7Ci0gICAgY29udHJvbGxlci0+YWRkKGNy
ZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAw
LCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7Ci0gICAgY29udHJvbGxlci0+
YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlv
bigxLCAxLCAwLjUpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKKyAgICBjb250
cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBG
YWtlVHJhbnNmb3JtVHJhbnNpdGlvbigyKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zv
cm0pKTsKKyAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9u
KGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVB
bmltYXRpb246Ok9wYWNpdHkpKTsKKyAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRl
QWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAu
NSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgLy8gQW5pbWF0aW9u
cyB3aXRoIGlkIDEgc2hvdWxkIGJvdGggc3RhcnQgbm93LgogICAgIGNvbnRyb2xsZXItPmFuaW1h
dGUoMCwgZXZlbnRzLmdldCgpKTsKQEAgLTUzMCw3ICszMzAsNyBAQCBURVNUKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyVGVzdCwgU2NoZWR1bGVBbmltYXRpb24pCiAgICAgT3duUHRyPENDQWN0
aXZlQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZh
a2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0
eSkpOwogICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0Zv
clN0YXJ0VGltZSwgMCk7CiAgICAgdG9BZGQtPnNldFN0YXJ0VGltZSgxKTsKLSAgICBjb250cm9s
bGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKKyAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24o
dG9BZGQucmVsZWFzZSgpKTsKIAogICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgZXZlbnRzLmdl
dCgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CkBAIC01NTEsMTIgKzM1MSwxMiBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVz
dCwgU2NoZWR1bGVkQW5pbWF0aW9uSW50ZXJydXB0c1J1bm5pbmdBbmltYXRpbwogICAgIE93blB0
cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKIAotICAgIGNvbnRyb2xsZXIt
PmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRp
b24oMiwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRy
b2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZh
a2VGbG9hdFRyYW5zaXRpb24oMiwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0
eSkpOwogCiAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVB
bmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMC41LCAwKSksIDIs
IENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKEND
QWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lLCAwKTsKICAgICB0b0FkZC0+c2V0
U3RhcnRUaW1lKDEpOwotICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOworICAg
IGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOwogCiAgICAgLy8gRmly
c3QgMnMgb3BhY2l0eSB0cmFuc2l0aW9uIHNob3VsZCBzdGFydCBpbW1lZGlhdGVseS4KICAgICBj
b250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7CkBAIC01ODIsMTQgKzM4MiwxNCBA
QCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgU2NoZWR1bGVkQW5pbWF0aW9u
SW50ZXJydXB0c1J1bm5pbmdBbmltYXRpbwogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcj4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6
OmNyZWF0ZSgmZHVtbXkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmlt
YXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMiwgMCwgMSkpLCAxLCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbihj
cmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMiwg
MCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgT3duUHRyPEND
QWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3
IEZha2VGbG9hdFRyYW5zaXRpb24oMiwgMC41LCAwKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpP
cGFjaXR5KSk7CiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0
aW5nRm9yU3RhcnRUaW1lLCAwKTsKICAgICB0b0FkZC0+c2V0U3RhcnRUaW1lKDEpOwotICAgIGNv
bnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOworICAgIGNvbnRyb2xsZXItPmFkZEFuaW1h
dGlvbih0b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2
ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAwLjc1KSks
IDMsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisgICAgY29udHJvbGxlci0+YWRkQW5p
bWF0aW9uKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNp
dGlvbigxLCAwLCAwLjc1KSksIDMsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKICAg
ICAvLyBGaXJzdCAycyBvcGFjaXR5IHRyYW5zaXRpb24gc2hvdWxkIHN0YXJ0IGltbWVkaWF0ZWx5
LgogICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgZXZlbnRzLmdldCgpKTsKQEAgLTYyMCw3ICs0
MjAsNyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgVHJpdmlhbExvb3Bp
bmcpCiAKICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGNyZWF0ZUFjdGl2ZUFu
aW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIDEsIEND
QWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgdG9BZGQtPnNldEl0ZXJhdGlvbnMoMyk7
Ci0gICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CisgICAgY29udHJvbGxlci0+
YWRkQW5pbWF0aW9uKHRvQWRkLnJlbGVhc2UoKSk7CiAKICAgICBjb250cm9sbGVyLT5hbmltYXRl
KDAsIGV2ZW50cy5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwpAQCAtNjU3LDcgKzQ1Nyw3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJUZXN0LCBJbmZpbml0ZUxvb3BpbmcpCiAgICAgY29uc3QgaW50IGlkID0gMTsKICAg
ICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihh
ZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFu
aW1hdGlvbjo6T3BhY2l0eSkpOwogICAgIHRvQWRkLT5zZXRJdGVyYXRpb25zKC0xKTsKLSAgICBj
b250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKKyAgICBjb250cm9sbGVyLT5hZGRBbmlt
YXRpb24odG9BZGQucmVsZWFzZSgpKTsKIAogICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgZXZl
bnRzLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRp
b24oKSk7CkBAIC02OTEsNyArNDkxLDcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
clRlc3QsIFBhdXNlUmVzdW1lKQogICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
Y3JlYXRlKCZkdW1teSkpOwogCiAgICAgY29uc3QgaW50IGlkID0gMTsKLSAgICBjb250cm9sbGVy
LT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0
aW9uKDEsIDAsIDEpKSwgaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisgICAgY29u
dHJvbGxlci0+YWRkQW5pbWF0aW9uKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcg
RmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3Bh
Y2l0eSkpOwogCiAgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCBldmVudHMuZ2V0KCkpOwogICAg
IEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKQEAgLTcyNiw5
ICs1MjYsOSBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgQWJvcnRBR3Jv
dXBlZEFuaW1hdGlvbikKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0
ZSgmZHVtbXkpKTsKIAogICAgIGNvbnN0IGludCBpZCA9IDE7Ci0gICAgY29udHJvbGxlci0+YWRk
KGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZVRyYW5zZm9ybVRyYW5zaXRp
b24oMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwotICAgIGNvbnRyb2xs
ZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5z
aXRpb24oMiwgMCwgMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKLSAgICBj
b250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxv
YXRUcmFuc2l0aW9uKDEsIDEsIDAuNzUpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkp
KTsKKyAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFk
b3B0UHRyKG5ldyBGYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigxKSksIGlkLCBDQ0FjdGl2ZUFuaW1h
dGlvbjo6VHJhbnNmb3JtKSk7CisgICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKGNyZWF0ZUFj
dGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigyLCAwLCAxKSks
IGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRyb2xsZXItPmFkZEFu
aW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5z
aXRpb24oMSwgMSwgMC43NSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAg
ICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCBldmVudHMuZ2V0KCkpOwogICAgIEVYUEVDVF9UUlVF
KGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKQEAgLTc1OCw3ICs1NTgsNyBAQCBU
RVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgRm9yY2VTeW5jV2hlblN5bmNocm9u
aXplZFN0YXJ0VGltZU5lZWRlZCkKIAogICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gdG9B
ZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9u
KDIsIDAsIDEpKSwgMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICB0b0FkZC0+
c2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUodHJ1ZSk7Ci0gICAgY29udHJvbGxlci0+YWRk
KHRvQWRkLnJlbGVhc2UoKSk7CisgICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHRvQWRkLnJl
bGVhc2UoKSk7CiAKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDApOwogICAgIEVYUEVDVF9U
UlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDEyNzVl
Yzg1NDI4MTA5OGMzMWUxYjgwMzA2MWM5Y2NhNGRiZjVkOGMuLmQ3MTM0MTM3ZDA1OGEzNjFjMGUz
N2ZkZTM0YjkzODMzZDRkZmM3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjg0NSw3ICsyODQ1LDcgQEAgcHVi
bGljOgogICAgICAgICAvLyBBbnkgdmFsaWQgQ0NBbmltYXRpb25DdXJ2ZSB3aWxsIGRvIGhlcmUu
CiAgICAgICAgIE93blB0cjxDQ0FuaW1hdGlvbkN1cnZlPiBjdXJ2ZShDQ0Vhc2VUaW1pbmdGdW5j
dGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1h
dGlvbihDQ0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgQW5pbWF0aW9u
SWRWZW5kb3I6OmdldE5leHRBbmltYXRpb25JZCgpLCBBbmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4
dEdyb3VwSWQoKSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKLSAgICAgICAgbGF5ZXIt
PmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGQoYW5pbWF0aW9uLnJlbGVhc2UoKSk7Cisg
ICAgICAgIGxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkQW5pbWF0aW9uKGFu
aW1hdGlvbi5yZWxlYXNlKCkpOwogCiAgICAgICAgIC8vIFdlIGFkZCB0aGUgYW5pbWF0aW9uICpi
ZWZvcmUqIGF0dGFjaGluZyB0aGUgbGF5ZXIgdG8gdGhlIHRyZWUuCiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+cm9vdExheWVyKCktPmFkZENoaWxkKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CmluZGV4IGI3YWE4NTc0NjVjYmFjMThjNDgyYWVkNWQ5NzMyMzI2NTE0ZGE2YTQuLjhmMzFiMjQz
ZmE0MGQxNjIzMjY5ZDA5YjIzMjZmMGIwMGZhZDI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtMjYsNTcgKzI2LDMyNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgi
CiAKKyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2lu
Y2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtl
R3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5
ZXIuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdFRlc3RzOwogCiBuYW1lc3BhY2UgewogCiBjbGFzcyBNb2NrR3JhcGhpY3NMYXllckNs
aWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKICAgcHVibGljOgotICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3Vi
bGUgdGltZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBH
cmFwaGljc0xheWVyKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3Qg
R3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1Bo
YXNlLCBjb25zdCBJbnRSZWN0JiBpbkNsaXApIHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG93RGVi
dWdCb3JkZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciop
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2Us
IGNvbnN0IEludFJlY3QmIGluQ2xpcCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBib29sIHNo
b3dEZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBH
cmFwaGljc0xheWVyKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKLVRF
U1QoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgdXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRFdpdGhB
bmltYXRpb25zKQotewotICAgIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IGNsaWVudDsKLSAgICBP
d25QdHI8R3JhcGhpY3NMYXllckNocm9taXVtPiBncmFwaGljc0xheWVyID0gc3RhdGljX3BvaW50
ZXJfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgmY2xp
ZW50KSk7Ci0gICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci5nZXQoKSk7CitjbGFzcyBNb2Nr
TGF5ZXJUcmVlSG9zdENsaWVudCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpIE9WRVJSSURFIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lk
IGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBh
Z2VTY2FsZSkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBjcmVhdGVDb250ZXh0KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9z
aXRvck1vY2tHcmFwaGljc0NvbnRleHQzRChhdHRycyk7CisgICAgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZl
cnMoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBP
VkVSUklERSB7IH0KK307CisKK2NsYXNzIE1vY2tMYXllclRyZWVIb3N0IDogcHVibGljIENDTGF5
ZXJUcmVlSG9zdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TW9ja0xheWVyVHJl
ZUhvc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIHdp
bGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCisgICAgICAgIENDU2V0dGluZ3Mgc2V0dGlu
Z3M7CisgICAgICAgIHNldHRpbmdzLnRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Cisg
ICAgICAgIE93blB0cjxNb2NrTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdChhZG9wdFB0cihu
ZXcgTW9ja0xheWVyVHJlZUhvc3QobmV3IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KCksIHNldHRp
bmdzKSkpOworICAgICAgICBib29sIHN1Y2Nlc3MgPSBsYXllclRyZWVIb3N0LT5pbml0aWFsaXpl
KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgICAgICBsYXllclRyZWVIb3N0
LT5zZXRSb290TGF5ZXIoTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOworICAgICAgICBsYXllclRy
ZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxLCAxKSk7CisgICAgICAgIHJldHVybiBs
YXllclRyZWVIb3N0LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
Q0NMYXllclRyZWVIb3N0SW1wbD4gY3JlYXRlTGF5ZXJUcmVlSG9zdEltcGwoQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCogY2xpZW50KQorICAgIHsKKyAgICAgICAgLy8gRm9yIHRoZXNlIHRlc3Rz
LCB3ZSB3aWxsIGVuYWJsZSB0aHJlYWRlZCBhbmltYXRpb25zLgorICAgICAgICBDQ1NldHRpbmdz
IGNvcHlTZXR0aW5ncyA9IHNldHRpbmdzKCk7CisgICAgICAgIGNvcHlTZXR0aW5ncy50aHJlYWRl
ZEFuaW1hdGlvbkVuYWJsZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y3JlYXRlKGNvcHlTZXR0aW5ncywgY2xpZW50KTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgTW9ja0xheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0
IENDU2V0dGluZ3MmIHNldHRpbmdzKQorICAgICAgICA6IENDTGF5ZXJUcmVlSG9zdChjbGllbnQs
IHNldHRpbmdzKQorICAgIHsKKyAgICB9Cit9OworCitjbGFzcyBHcmFwaGljc0xheWVyQ2hyb21p
dW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bVRlc3QoKQorICAgIHsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6
ZSgwKTsKKyAgICAgICAgbV9ncmFwaGljc0xheWVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxHcmFw
aGljc0xheWVyQ2hyb21pdW0+KEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgmbV9jbGllbnQpKTsKKyAg
ICAgICAgbV9wbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KG1fZ3Jh
cGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0ID0g
TW9ja0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSgpOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnNl
dExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0KCkKKyAgICB7CisgICAgICAgIG1fZ3JhcGhp
Y3NMYXllci5jbGVhcigpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKKyAgICAg
ICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAgICB9CiAKLSAgICBMYXllckNocm9taXVt
KiBwbGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KGdyYXBoaWNzTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKSk7Ci0gICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllcik7Citw
cm90ZWN0ZWQ6CisgICAgc3RhdGljIHZvaWQgZXhwZWN0VHJhbnNsYXRlWChkb3VibGUgdHJhbnNs
YXRlWCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKKyAgICB7CisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2VkVHlwZTsKKyAg
ICAgICAgbWF0cml4LmRlY29tcG9zZShkZWNvbXBvc2VkVHlwZSk7CisgICAgICAgIEVYUEVDVF9G
TE9BVF9FUSh0cmFuc2xhdGVYLCBkZWNvbXBvc2VkVHlwZS50cmFuc2xhdGVYKTsKKyAgICB9CiAK
LSAgICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwor
ICAgIExheWVyQ2hyb21pdW0qIG1fcGxhdGZvcm1MYXllcjsKKyAgICBPd25QdHI8R3JhcGhpY3NM
YXllckNocm9taXVtPiBtX2dyYXBoaWNzTGF5ZXI7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9z
dD4gbV9sYXllclRyZWVIb3N0OworCitwcml2YXRlOgorICAgIE1vY2tHcmFwaGljc0xheWVyQ2xp
ZW50IG1fY2xpZW50OworICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZCBtX21haW47Cit9Owor
CitURVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgdXBkYXRlTGF5ZXJQcmVzZXJ2ZXMz
RFdpdGhBbmltYXRpb25zKQoreworICAgIEFTU0VSVF9GQUxTRShtX3BsYXRmb3JtTGF5ZXItPmhh
c0FjdGl2ZUFuaW1hdGlvbigpKTsKIAogICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gZmxv
YXRBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OmNyZWF0ZShhZG9wdFB0cihuZXcgRmFrZUZs
b2F0QW5pbWF0aW9uQ3VydmUpLCAwLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwot
ICAgIHBsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGQoZmxvYXRB
bmltYXRpb24ucmVsZWFzZSgpKTsKKyAgICBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcigpLT5hZGRBbmltYXRpb24oZmxvYXRBbmltYXRpb24ucmVsZWFzZSgpKTsKKwor
ICAgIEFTU0VSVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwor
CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKworICAgIG1fcGxh
dGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21pdW0qPihtX2dyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUobV9wbGF0Zm9ybUxheWVyKTsKKwor
ICAgIEFTU0VSVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwor
ICAgIG1fcGxhdGZvcm1MYXllci0+cmVtb3ZlQW5pbWF0aW9uKDApOworICAgIEFTU0VSVF9GQUxT
RShtX3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAgIG1fZ3JhcGhp
Y3NMYXllci0+c2V0UHJlc2VydmVzM0QoZmFsc2UpOworCisgICAgbV9wbGF0Zm9ybUxheWVyID0g
c3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXll
cigpKTsKKyAgICBBU1NFUlRfVFJVRShtX3BsYXRmb3JtTGF5ZXIpOworCisgICAgQVNTRVJUX0ZB
TFNFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworfQorCitURVNUX0Yo
R3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlT3BhY2l0eUFuaW1hdGlvbikKK3sKKyAg
ICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVM
aXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7CisgICAgdmFsdWVzLmluc2VydChu
ZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgwLCAwKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgRmxv
YXRBbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgMSkpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4g
YW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0
aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNpemUgYm94U2l6ZTsKKyAgICBib29sIGFkZGVkQW5p
bWF0aW9uID0gbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBh
bmltYXRpb24uZ2V0KCksICIiLCAwKTsKKworICAgIEVYUEVDVF9UUlVFKGFkZGVkQW5pbWF0aW9u
KTsKKworICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250
cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAgIENDQWN0aXZlQW5pbWF0aW9u
KiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpOwor
ICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7CisKKyAgICBFWFBFQ1RfRVEoMSwgYWN0
aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOworICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1h
dGlvbjo6T3BhY2l0eSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQcm9wZXJ0eSgpKTsKKworICAg
IEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpGbG9hdCwgYWN0aXZlQW5pbWF0aW9uLT5jdXJ2
ZSgpLT50eXBlKCkpOworCisgICAgY29uc3QgQ0NGbG9hdEFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9
IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dG9GbG9hdEFuaW1hdGlvbkN1cnZlKCk7CisgICAg
RVhQRUNUX1RSVUUoY3VydmUpOworCisgICAgRVhQRUNUX0VRKDAsIGN1cnZlLT5nZXRWYWx1ZSgw
KSk7CisgICAgRVhQRUNUX0VRKDEsIGN1cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOworfQorCitU
RVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9u
KQoreworICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9IDE7CisgICAgV2ViQ29yZTo6S2V5ZnJh
bWVWYWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisg
ICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBvcGVyYXRpb25zMS5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0
aCgyLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgw
LCAmb3BlcmF0aW9uczEpKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7
CisgICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZShMZW5ndGgoNCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sICZvcGVyYXRpb25zMikpOworCisgICAgUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmlt
YXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNpemUgYm94U2l6ZTsKKyAg
ICBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlv
bi5nZXQoKSwgIiIsIDApOworCisgICAgRVhQRUNUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5sYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworCisgICAgQ0NB
Y3RpdmVBbmltYXRpb24qIGFjdGl2ZUFuaW1hdGlvbiA9IG1fcGxhdGZvcm1MYXllci0+bGF5ZXJB
bmltYXRpb25Db250cm9sbGVyKCktPmdldEFjdGl2ZUFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1hdGlv
bjo6VHJhbnNmb3JtKTsKKyAgICBFWFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24pOworCisgICAg
RVhQRUNUX0VRKDEsIGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQ
cm9wZXJ0eSgpKTsKKworICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpUcmFuc2Zvcm0s
IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKKworICAgIGNvbnN0IENDVHJhbnNm
b3JtQW5pbWF0aW9uQ3VydmUqIGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b1Ry
YW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CisgICAgRVhQRUNUX1RSVUUoY3VydmUpOworCisgICAg
ZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOworICAgIGV4cGVjdFRyYW5z
bGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uKSk7Cit9CisKK1RFU1RfRihHcmFwaGlj
c0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVSZXZlcnNlZEFuaW1hdGlvbikKK3sKKyAgICBjb25z
dCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZh
bHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVu
ZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgRml4ZWQpLCBM
ZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CisgICAg
dmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMx
KSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlv
bnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+
IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJh
dGlvbihkdXJhdGlvbik7CisgICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpB
bmltYXRpb25EaXJlY3Rpb25SZXZlcnNlKTsKKworICAgIEludFNpemUgYm94U2l6ZTsKKyAgICBt
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5n
ZXQoKSwgIiIsIDApOworCisgICAgRVhQRUNUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5sYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworCisgICAgQ0NBY3Rp
dmVBbmltYXRpb24qIGFjdGl2ZUFuaW1hdGlvbiA9IG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKCktPmdldEFjdGl2ZUFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1hdGlvbjo6
VHJhbnNmb3JtKTsKKyAgICBFWFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24pOworCisgICAgRVhQ
RUNUX0VRKDEsIGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQcm9w
ZXJ0eSgpKTsKKworICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpUcmFuc2Zvcm0sIGFj
dGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKKworICAgIGNvbnN0IENDVHJhbnNmb3Jt
QW5pbWF0aW9uQ3VydmUqIGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b1RyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlKCk7CisgICAgRVhQRUNUX1RSVUUoY3VydmUpOworCisgICAgZXhw
ZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOworICAgIGV4cGVjdFRyYW5zbGF0
ZVgoMiwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uKSk7Cit9CisKK1RFU1RfRihHcmFwaGljc0xh
eWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVBbHRlcm5hdGluZ0FuaW1hdGlvbikKK3sKKyAgICBjb25z
dCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZh
bHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVu
ZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgRml4ZWQpLCBM
ZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CisgICAg
dmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMx
KSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlv
bnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+
IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJh
dGlvbihkdXJhdGlvbik7CisgICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpB
bmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpOworICAgIGFuaW1hdGlvbi0+c2V0SXRlcmF0aW9u
Q291bnQoMik7CisKKyAgICBJbnRTaXplIGJveFNpemU7CisgICAgbV9ncmFwaGljc0xheWVyLT5h
ZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICIiLCAwKTsKKwor
ICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3Rp
dmVBbmltYXRpb24gPSBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigp
LT5nZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7CisgICAg
RVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKKyAgICBFWFBFQ1RfVFJVRShhY3RpdmVBbmlt
YXRpb24tPmFsdGVybmF0ZXNEaXJlY3Rpb24oKSk7CisKKyAgICBFWFBFQ1RfRVEoMiwgYWN0aXZl
QW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOworICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlv
bjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFByb3BlcnR5KCkpOworCisgICAg
RVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT5j
dXJ2ZSgpLT50eXBlKCkpOworCisgICAgY29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSog
Y3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJhbnNmb3JtQW5pbWF0aW9uQ3Vy
dmUoKTsKKyAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7CisKKyAgICBleHBlY3RUcmFuc2xhdGVYKDIs
IGN1cnZlLT5nZXRWYWx1ZSgwKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0
VmFsdWUoZHVyYXRpb24pKTsKK30KKworVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qs
IGNyZWF0ZVJldmVyc2VkQWx0ZXJuYXRpbmdBbmltYXRpb24pCit7CisgICAgY29uc3QgZG91Ymxl
IGR1cmF0aW9uID0gMTsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5p
bWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIEZpeGVkKSwgTGVuZ3RoKDAs
IEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5p
bnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOworCisg
ICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAgICBvcGVyYXRpb25zMi5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0
aCg0LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShk
dXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRp
b24gPSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVy
YXRpb24pOworICAgIGFuaW1hdGlvbi0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9u
RGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSk7CisgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25D
b3VudCgyKTsKIAotICAgIEFTU0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKKyAgICBJbnRTaXplIGJveFNpemU7CisgICAgbV9ncmFwaGljc0xheWVyLT5hZGRB
bmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksICIiLCAwKTsKIAotICAg
IGdyYXBoaWNzTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOworICAgIEVYUEVDVF9UUlVFKG1f
cGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1h
dGlvbigpKTsKIAotICAgIHBsYXRmb3JtTGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllckNocm9taXVt
Kj4oZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpKTsKLSAgICBBU1NFUlRfVFJVRShwbGF0
Zm9ybUxheWVyKTsKKyAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gbV9w
bGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+Z2V0QWN0aXZlQW5pbWF0
aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9UUlVFKGFjdGl2
ZUFuaW1hdGlvbik7CisgICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uLT5hbHRlcm5hdGVz
RGlyZWN0aW9uKCkpOwogCi0gICAgQVNTRVJUX1RSVUUocGxhdGZvcm1MYXllci0+aGFzQWN0aXZl
QW5pbWF0aW9uKCkpOwotICAgIHBsYXRmb3JtTGF5ZXItPnJlbW92ZUFuaW1hdGlvbigwKTsKLSAg
ICBBU1NFUlRfRkFMU0UocGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOworICAg
IEVYUEVDVF9FUSgyLCBhY3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMoKSk7CisgICAgRVhQRUNU
X0VRKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+dGFyZ2V0
UHJvcGVydHkoKSk7CiAKLSAgICBncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChmYWxzZSk7
CisgICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0
aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOwogCi0gICAgcGxhdGZvcm1MYXllciA9IHN0YXRpY19jYXN0
PExheWVyQ2hyb21pdW0qPihncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotICAgIEFT
U0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXIpOworICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9u
Q3VydmUqIGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b1RyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlKCk7CisgICAgRVhQRUNUX1RSVUUoY3VydmUpOwogCi0gICAgQVNTRVJUX0ZBTFNF
KHBsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKyAgICBleHBlY3RUcmFuc2xh
dGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2
ZS0+Z2V0VmFsdWUoZHVyYXRpb24pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>