<?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>130359</bug_id>
          
          <creation_ts>2014-03-17 14:05:16 -0700</creation_ts>
          <short_desc>[Mac] Standardize on start/length in text input IPC methods</short_desc>
          <delta_ts>2014-03-17 14:32:12 -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>WebKit2</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991381</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-17 14:05:16 -0700</bug_when>
    <thetext>Some IPC methods use start/length, and others use start/end. This is confusing.

Most implementation methods just compute length from start/end as the first thing they do, so it&apos;s better to standardize on this I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991385</commentid>
    <comment_count>1</comment_count>
      <attachid>226962</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-17 14:09:18 -0700</bug_when>
    <thetext>Created attachment 226962
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991399</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-17 14:32:12 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r165759&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226962</attachid>
            <date>2014-03-17 14:09:18 -0700</date>
            <delta_ts>2014-03-17 14:13:42 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>LocationLength.txt</filename>
            <type>text/plain</type>
            <size>33702</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTc1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTAzLTE3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFN0YW5kYXJkaXpl
IG9uIHN0YXJ0L2xlbmd0aCBpbiB0ZXh0IGlucHV0IElQQyBtZXRob2RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzNTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIElQQyBtZXRob2RzIHVzZWQg
c3RhcnQvbGVuZ3RoLCBhbmQgb3RoZXJzIHVzZSBzdGFydC9lbmQuIFRoaXMgd2FzIGNvbmZ1c2lu
Zy4KKworICAgICAgICBXaGlsZSBoZXJlLCBjaGFuZ2VkIFdlYlBhZ2VNYWMubW0gdG8gbm90IHVz
ZSBOU01ha2VSYW5nZSB3aGVyZSB3ZSBkb24ndCBuZWVkIGl0CisgICAgICAgIChJIHdhbnQgdG8g
bW92ZSB0aGlzIGNvZGUgdG8gV2ViUGFnZS5jcHAsIHdoZXJlIGl0IGNvdWxkIGJlIHNoYXJlZCB3
aXRoIGlPUyBhbmQKKyAgICAgICAgb3RoZXIgcGxhdGZvcm1zLCBhcyBpdCBkb2Vzbid0IGRlcGVu
ZCBvbiBGb3VuZGF0aW9uIG11Y2gpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5zZXJ0VGV4dDpyZXBsYWNlbWVudFJhbmdlOl0p
OgorICAgICAgICAoLVtXS1ZpZXcgc2V0TWFya2VkVGV4dDpzZWxlY3RlZFJhbmdlOnJlcGxhY2Vt
ZW50UmFuZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJv
cG9zZWRSYW5nZTphY3R1YWxSYW5nZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRlcm5hbFNob3dDb250
ZXh0TWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjppbnNlcnRUZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Omluc2VydERpY3RhdGVkVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEF0
dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9S
YW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKToKKwogMjAxNC0wMy0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBTUEkgZm9yIGdldHRpbmcgYnVuZGxlIHBhcmFtZXRlcnMgZnJvbSB0
aGUgaW5qZWN0ZWQgYnVuZGxlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkocmV2aXNpb24gMTY1NzQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0ODIsNyArNDQ4Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVVJJUmVxdWVzdCgKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRf
dCBzZWxlY3Rpb25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNl
bWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50
NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZSkKIHsKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBmaW5kIG91
dCBob3cgdG8gcHJvcGVyIGhhbmRsZSB0aGUgY3Jhc2hlcyBjYXNlLgogICAgIGlmICghaXNWYWxp
ZCgpKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMTY1NzUwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MjUsMTQgKzUyNSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aW5k
b3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFt
ZUluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2li
aWxpdHlWaWV3Q29vcmRpbmF0ZXMpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxl
KGJvb2wpOwogCi0gICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZl
Y3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qg
c2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCwgdWludDY0X3QgcmVwbGFjZW1l
bnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsKKyAgICB2b2lkIHNl
dENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rpb25TdGFydCwgdWludDY0
X3Qgc2VsZWN0aW9uTGVuZ3RoLCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2
NF90IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KCk7CiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbigpOwotICAgIGJvb2wgaW5zZXJ0VGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCk7Ci0gICAgYm9vbCBpbnNlcnREaWN0YXRlZFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90
IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIGJvb2wgaW5zZXJ0VGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUxlbmd0aCk7CisgICAgYm9vbCBpbnNlcnREaWN0YXRlZFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVp
bnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIHZvaWQg
Z2V0TWFya2VkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKICAg
ICB2b2lkIGdldFNlbGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVu
Z3RoKTsKLSAgICB2b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3Qg
cmFuZ2VTdGFydCwgdWludDY0X3QgcmFuZ2VFbmQsIEF0dHJpYnV0ZWRTdHJpbmcmKTsKKyAgICB2
b2lkIGdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgcmFuZ2VTdGFydCwg
dWludDY0X3QgcmFuZ2VMZW5ndGgsIEF0dHJpYnV0ZWRTdHJpbmcmKTsKICAgICB1aW50NjRfdCBj
aGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50KTsKICAgICBXZWJD
b3JlOjpJbnRSZWN0IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90LCB1aW50NjRf
dCk7CiAgICAgYm9vbCBleGVjdXRlS2V5cHJlc3NDb21tYW5kcyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6S2V5cHJlc3NDb21tYW5kPiYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTY1NzQ5KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkwLDkgKzEyOTAs
OSBAQCAtICh2b2lkKWluc2VydFRleHQ6KGlkKXN0cmluZyByZXBsYWNlbWVuCiAgICAgZXZlbnRU
ZXh0LnJlcGxhY2UoTlNCYWNrVGFiQ2hhcmFjdGVyLCBOU1RhYkNoYXJhY3Rlcik7IC8vIHNhbWUg
dGhpbmcgaXMgZG9uZSBpbiBLZXlFdmVudE1hYy5tbSBpbiBXZWJDb3JlCiAgICAgYm9vbCBldmVu
dEhhbmRsZWQ7CiAgICAgaWYgKCFkaWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKQotICAg
ICAgICBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2VydERpY3RhdGVkVGV4dChldmVu
dFRleHQsIHJlcGxhY2VtZW50UmFuZ2UubG9jYXRpb24sIE5TTWF4UmFuZ2UocmVwbGFjZW1lbnRS
YW5nZSksIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgICAgIGV2ZW50SGFuZGxlZCA9IF9k
YXRhLT5fcGFnZS0+aW5zZXJ0RGljdGF0ZWRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5n
ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRSYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkFsdGVybmF0aXZl
cyk7CiAgICAgZWxzZQotICAgICAgICBldmVudEhhbmRsZWQgPSBfZGF0YS0+X3BhZ2UtPmluc2Vy
dFRleHQoZXZlbnRUZXh0LCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJl
cGxhY2VtZW50UmFuZ2UpKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gX2RhdGEtPl9wYWdlLT5p
bnNlcnRUZXh0KGV2ZW50VGV4dCwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlvbiwgcmVwbGFjZW1l
bnRSYW5nZS5sZW5ndGgpOwogCiAgICAgaWYgKHBhcmFtZXRlcnMpCiAgICAgICAgIHBhcmFtZXRl
cnMtPmV2ZW50SW50ZXJwcmV0YXRpb25IYWRTaWRlRWZmZWN0cyB8PSBldmVudEhhbmRsZWQ7CkBA
IC0xNjA5LDEzICsxNjA5LDEzIEBAIC0gKHZvaWQpc2V0TWFya2VkVGV4dDooaWQpc3RyaW5nIHNl
bGVjdGUKICAgICAgICAgQVNTRVJUKCFfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29t
cG9zaXRpb24pOwogICAgICAgICBbc2VsZiBfbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJk
ZWRDb21wb3NpdGlvbl07CiAgICAgICAgIGlmIChbdGV4dCBsZW5ndGhdID09IDEgJiYgW1t0ZXh0
IGRlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ10gY2hhcmFjdGVyQXRJbmRleDow
XSA8IDB4ODApIHsKLSAgICAgICAgICAgIF9kYXRhLT5fcGFnZS0+aW5zZXJ0VGV4dCh0ZXh0LCBy
ZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCBOU01heFJhbmdlKHJlcGxhY2VtZW50UmFuZ2UpKTsK
KyAgICAgICAgICAgIF9kYXRhLT5fcGFnZS0+aW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJh
bmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudFJhbmdlLmxlbmd0aCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgTlNCZWVwKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfZGF0
YS0+X3BhZ2UtPnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIG5ld1NlbFJhbmdlLmxv
Y2F0aW9uLCBOU01heFJhbmdlKG5ld1NlbFJhbmdlKSwgcmVwbGFjZW1lbnRSYW5nZS5sb2NhdGlv
biwgTlNNYXhSYW5nZShyZXBsYWNlbWVudFJhbmdlKSk7CisgICAgX2RhdGEtPl9wYWdlLT5zZXRD
b21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBuZXdTZWxSYW5nZS5sb2NhdGlvbiwgbmV3U2Vs
UmFuZ2UubGVuZ3RoLCByZXBsYWNlbWVudFJhbmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudFJhbmdl
Lmxlbmd0aCk7CiB9CiAKIC0gKE5TUmFuZ2UpbWFya2VkUmFuZ2UKQEAgLTE2NDMsNyArMTY0Myw3
IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdWJzdHIKICAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIEF0dHJpYnV0ZWRTdHJpbmcgcmVzdWx0OwotICAgIF9kYXRhLT5fcGFn
ZS0+Z2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZShuc1JhbmdlLmxvY2F0aW9uLCBOU01h
eFJhbmdlKG5zUmFuZ2UpLCByZXN1bHQpOworICAgIF9kYXRhLT5fcGFnZS0+Z2V0QXR0cmlidXRl
ZFN1YnN0cmluZ0Zyb21SYW5nZShuc1JhbmdlLmxvY2F0aW9uLCBuc1JhbmdlLmxlbmd0aCwgcmVz
dWx0KTsKIAogICAgIGlmIChhY3R1YWxSYW5nZSkgewogICAgICAgICAqYWN0dWFsUmFuZ2UgPSBu
c1JhbmdlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0JKHJldmlzaW9uIDE2NTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCwxMiArOTgsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd0FuZFZpZXdGcmFtZXNDaAogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbihjb25zdCBT
dHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lLCB1aW50
NjRfdCBzZWxlY3Rpb25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCwgdWlu
dDY0X3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0
ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZSwgdWludDY0X3Qgc2Vs
ZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCwgdWludDY0X3QsIHVpbnQ2NF90
KQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5l
LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmUs
IHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oKQpAQCAtMTIwLDEyICsxMjAsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKIAogfQogCi1ib29sIFdlYlBh
Z2VQcm94eTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkKK2Jvb2wgV2ViUGFn
ZVByb3h5OjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1l
bnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoKQogewogICAgIGlm
ICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdl
U3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0
YXJ0LCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoKSwgbV9wYWdlSUQpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQkocmV2aXNpb24gMTY1NzUwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxhCiAgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Njcm9s
bGFibGUpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlv
bihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJs
aW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5k
KQordm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
VmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rp
b25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoLCB1aW50NjRfdCByZXBsYWNlbWVudFJh
bmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBmYWlscywgd2Ugc2hvdWxkIGNhbGwgLWRp
c2NhcmRNYXJrZWRUZXh0IG9uIGlucHV0IGNvbnRleHQgdG8gbm90aWZ5IHRoZSBpbnB1dCBtZXRo
b2QuCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9u
KGNvbnN0IAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxl
Y3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2Vt
ZW50UmFuZ2VFbmQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb246OlJlcGx5KG1f
ZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFy
dCwgc2VsZWN0aW9uTGVuZ3RoLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFu
Z2VMZW5ndGgpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb246OlJlcGx5KG1fZWRp
dG9yU3RhdGUpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29t
cG9zaXRpb24oKQpAQCAtMTc4LDIzICsxNzgsMjMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNl
bENvbXBvc2l0aW9uKCkKICAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6
OkNhbmNlbENvbXBvc2l0aW9uKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRp
b246OlJlcGx5KG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CiB9CiAKLWJvb2wgV2ViUGFnZVBy
b3h5OjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKQorYm9vbCBXZWJQYWdlUHJv
eHk6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJh
bmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBoYW5kbGVkID0gdHJ1
ZTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHQo
dGV4dCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6Okluc2VydFRleHQ6OlJlcGx5KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBt
X3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNl
cnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUxlbmd0
aCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0OjpSZXBseShoYW5kbGVkLCBtX2VkaXRv
clN0YXRlKSwgbV9wYWdlSUQpOwogICAgIG1fdGVtcG9yYXJpbHlDbG9zZWRDb21wb3NpdGlvbiA9
IGZhbHNlOwogCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKLWJvb2wgV2ViUGFnZVByb3h5Ojpp
bnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVu
dFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIGNvbnN0IFZlY3RvcjxU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2Up
Citib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJh
bmdlTGVuZ3RoLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0
aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlKQogewogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQogICAgIGlmIChkaWN0YXRpb25BbHRlcm5hdGl2ZXNXaXRoUmFuZ2UuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJl
cGxhY2VtZW50UmFuZ2VFbmQpOworICAgICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBs
YWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpOwogCiAgICAgaWYgKCFp
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjA5LDEzICsyMDksMTMgQEAgYm9v
bCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dChjbwogICAgIH0KIAogICAgIGlmIChk
aWN0YXRpb25BbHRlcm5hdGl2ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gaW5zZXJ0VGV4
dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpOworICAg
ICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxh
Y2VtZW50UmFuZ2VMZW5ndGgpOwogCiAgICAgYm9vbCBoYW5kbGVkID0gdHJ1ZTsKLSAgICBwcm9j
ZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dCh0ZXh0
LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQsIGRpY3RhdGlvbkFs
dGVybmF0aXZlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQ6OlJlcGx5
KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQodGV4dCwgcmVwbGFjZW1l
bnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoLCBkaWN0YXRpb25BbHRlcm5hdGl2
ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0OjpSZXBseShoYW5kbGVk
LCBtX2VkaXRvclN0YXRlKSwgbV9wYWdlSUQpOwogICAgIHJldHVybiBoYW5kbGVkOwogI2Vsc2UK
LSAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxh
Y2VtZW50UmFuZ2VFbmQpOworICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50
UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUxlbmd0aCk7CiAjZW5kaWYKIH0KIApAQCAtMjQx
LDExICsyNDEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2UodWludAog
ICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5n
ZSgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZTo6UmVwbHkobG9jYXRpb24s
IGxlbmd0aCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldEF0dHJpYnV0
ZWRTdWJzdHJpbmdGcm9tUmFuZ2UodWludDY0X3QgcmFuZ2VTdGFydCwgdWludDY0X3QgcmFuZ2VF
bmQsIEF0dHJpYnV0ZWRTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRBdHRy
aWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IHJhbmdlU3RhcnQsIHVpbnQ2NF90IHJh
bmdlTGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgaWYgKCFpc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UocmFuZ2VTdGFydCwgcmFuZ2VF
bmQpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZTo6
UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZTo6R2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZShyYW5nZVN0YXJ0LCBy
YW5nZUxlbmd0aCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlOjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCk7CiB9CiAKIHVpbnQ2NF90IFdlYlBhZ2VQ
cm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludChjb25zdCBJbnRQb2ludCBwb2ludCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDE2NTc0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkwNyw3ICszOTA3LDcgQEAgdm9pZCBXZWJQYWdlOjpj
b25maXJtQ29tcG9zaXRpb24oY29uc3QgUwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxDb21wb3NpdGlvblVu
ZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNl
bGVjdGlvbkVuZCwgdWludDY0X3QgcmVwbGFjZW1lbnRTdGFydCwgdWludDY0X3QgcmVwbGFjZW1l
bnRMZW5ndGgpCit2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4
dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxl
Y3Rpb25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoLCB1aW50NjRfdCByZXBsYWNlbWVu
dFN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudExlbmd0aCkKIHsKICAgICBGcmFtZSogdGFyZ2V0
RnJhbWUgPSB0YXJnZXRGcmFtZUZvckVkaXRpbmcodGhpcyk7CiAgICAgaWYgKCF0YXJnZXRGcmFt
ZSB8fCAhdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRh
YmxlKCkpIHsKQEAgLTM5MjYsNyArMzkyNiw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRp
b24oY29uc3QgU3RyaW4KICAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNv
bXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKTsKICAgICB9CiAKLSAgICB0YXJnZXRGcmFt
ZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3Rh
cnQsIHNlbGVjdGlvbkVuZCk7CisgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldENvbXBvc2l0
aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25TdGFydCArIHNl
bGVjdGlvbkxlbmd0aCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JT
dGF0ZUNoYW5nZWQoZWRpdG9yU3RhdGUoKSkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDE2NTc1MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1NSw4ICs0NTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jQXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBi
b29sJiBjb3JyZWN0aW9uQXBwbGllZCk7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25D
b250ZXh0KFN0cmluZyYgYmVmb3JlVGV4dCwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNl
bGVjdGVkVGV4dCwgU3RyaW5nJiBhZnRlclRleHQsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0
X3QmIGxlbmd0aCk7Ci0gICAgdm9pZCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5k
KTsKLSAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdl
YkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rp
b25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kKTsKKyAgICB2b2lkIGluc2VydFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90
IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpOworICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVy
bGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBzZWxlY3Rpb25MZW5ndGgp
OwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKCk7CiAgICAgdm9pZCBnZXRQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlv
bkF0UG9zaXRpb24mKTsKICAgICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CkBAIC01MjEsNyArNTIxLDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5l
cywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kKTsK
KyAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFdlYkNv
cmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rpb25T
dGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpOwogICAgIHZvaWQgY29uZmlybUNv
bXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgaW50NjRfdCBzZWxlY3Rpb25TdGFydCwgaW50
NjRfdCBzZWxlY3Rpb25MZW5ndGgpOwogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oKTsKICNl
bmRpZgpAQCAtNTM4LDEzICs1MzgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxDb21w
b3NpdGlvbihFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2lmICFQTEFURk9STShJT1MpCi0gICAg
dm9pZCBpbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5kLCBib29sJiBoYW5kbGVkLCBF
ZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwotICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGlu
ZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2
NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwg
RWRpdG9yU3RhdGUmIG5ld1N0YXRlKTsKKyAgICB2b2lkIGluc2VydFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2Vt
ZW50UmFuZ2VMZW5ndGgsIGJvb2wmIGhhbmRsZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7Cisg
ICAgdm9pZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3Rh
cnQsIHVpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0
YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoLCBFZGl0b3JTdGF0ZSYgbmV3U3Rh
dGUpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7
CiAjZW5kaWYKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2NhdGlvbiwgdWlu
dDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKHVpbnQ2NF90JiBsb2Nh
dGlvbiwgdWludDY0X3QmIGxlbmd0aCk7Ci0gICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKHVpbnQ2NF90IHJhbmdlU3RhcnQsIHVpbnQ2NF90IHJhbmdlRW5kLCBBdHRyaWJ1
dGVkU3RyaW5nJik7CisgICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVp
bnQ2NF90IHJhbmdlU3RhcnQsIHVpbnQ2NF90IHJhbmdlTGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5n
Jik7CiAgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCB1aW50NjRfdCYgcmVzdWx0KTsKICAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIFdlYkNvcmU6Oklu
dFJlY3QmIHJlc3VsdFJlY3QpOwogICAgIHZvaWQgZXhlY3V0ZUtleXByZXNzQ29tbWFuZHMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mLCBib29sJiBoYW5kbGVkLCBFZGl0
b3JTdGF0ZSYgbmV3U3RhdGUpOwpAQCAtNTU0LDcgKzU1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZl
bnQmLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgYWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50
TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmLCBib29sJiByZXN1bHQpOwogICAg
IGJvb2wgcGVyZm9ybU5vbkVkaXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKLSAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0
X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlvbkFs
dGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRsZWQs
IEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7CisgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90
IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRpb25B
bHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlTG9jYXRpb25zLCBib29sJiBoYW5kbGVk
LCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIHZvaWQg
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOwogICAg
IHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5n
LCBjb25zdCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4mIHVuZGVy
bGluZXMsIHVpbnQ2NF90IGN1cnNvclBvc2l0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxNjU3NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTeW5jQXBwbHlBdXRvY29ycmVjdGlvbihTdHJp
bmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkgLT4gKGJvb2wgYXV0b2NvcnJlY3Rp
b25BcHBsaWVkKQogICAgIFJlcXVlc3RBdXRvY29ycmVjdGlvbkNvbnRleHQodWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBHZXRBdXRvY29ycmVjdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIGJlZm9y
ZUNvbnRleHQsIFN0cmluZyBtYXJrZWRUZXh0LCBTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcg
YWZ0ZXJDb250ZXh0LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKSAKLSAgICBJ
bnNlcnRUZXh0KFN0cmluZyB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVp
bnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpCi0gICAgU2V0Q29tcG9zaXRpb24oU3RyaW5nIHRl
eHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWlu
dDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCkKKyAgICBJbnNlcnRU
ZXh0KFN0cmluZyB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90
IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgpCisgICAgU2V0Q29tcG9zaXRpb24oU3RyaW5nIHRleHQs
IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcywgdWludDY0
X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCkKICAgICBDb25maXJt
Q29tcG9zaXRpb24oKQogICAgIEdldFBvc2l0aW9uSW5mb3JtYXRpb24oV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQpIC0+IChXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGlu
Zm9ybWF0aW9uKQogICAgIFJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKFdlYkNvcmU6OkludFBv
aW50IHBvaW50KQpAQCAtMjc0LDcgKzI3NCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgU2V0Q29tcG9zaXRp
b24oU3RyaW5nIHRleHQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5k
ZXJsaW5lcywgdWludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIHVpbnQ2NF90IHNlbGVjdGlvbkVuZCwg
dWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdl
RW5kKQorICAgIFNldENvbXBvc2l0aW9uKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29t
cG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1
aW50NjRfdCBzZWxlY3Rpb25FbmQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUxlbmd0aCkKICAgICBDb25maXJtQ29tcG9zaXRpb24oU3Ry
aW5nIHRleHQsIGludDY0X3Qgc2VsZWN0aW9uU3RhcnQsIGludDY0X3Qgc2VsZWN0aW9uTGVuZ3Ro
KQogICAgIENhbmNlbENvbXBvc2l0aW9uKCkKICNlbmRpZgpAQCAtMjk0LDE3ICsyOTQsMTcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2FuY2VsQ29tcG9zaXRp
b24oKSAtPiAoV2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKICAgICBHZXRNYXJrZWRSYW5n
ZSgpIC0+ICh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKQogICAgIEdldFNlbGVj
dGVkUmFuZ2UoKSAtPiAodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkKLSAgICBH
ZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IHJhbmdlU3RhcnQsIHVpbnQ2
NF90IHJhbmdlRW5kKSAtPiAoV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkKKyAgICBH
ZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2NF90IHJhbmdlU3RhcnQsIHVpbnQ2
NF90IHJhbmdlTGVuZ3RoKSAtPiAoV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHJlc3VsdCkKICAg
ICBDaGFyYWN0ZXJJbmRleEZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KSAtPiAodWlu
dDY0X3QgcmVzdWx0KQogICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxv
Y2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHJlc3VsdFJlY3Qp
CiAgICAgRXhlY3V0ZUtleXByZXNzQ29tbWFuZHMoVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4gc2F2ZWRDb21tYW5kcykgLT4gKGJvb2wgaGFuZGxlZCwgV2ViS2l0OjpFZGl0b3JTdGF0
ZSBuZXdTdGF0ZSkKICAgICBTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50IGV2ZW50KSAtPiAoYm9vbCByZXN1bHQpCiAgICAgQWNjZXB0c0ZpcnN0TW91
c2UoaW50IGV2ZW50TnVtYmVyLCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29s
IHJlc3VsdCkKLSAgICBJbnNlcnREaWN0YXRlZFRleHQoU3RyaW5nIHRleHQsIHVpbnQ2NF90IHJl
cGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgVmVjdG9y
PFdlYkNvcmU6OkRpY3RhdGlvbkFsdGVybmF0aXZlPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMpIC0+
IChib29sIGhhbmRsZWQsIFdlYktpdDo6RWRpdG9yU3RhdGUgbmV3U3RhdGUpCisgICAgSW5zZXJ0
RGljdGF0ZWRUZXh0KFN0cmluZyB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQs
IHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VMZW5ndGgsIFZlY3RvcjxXZWJDb3JlOjpEaWN0YXRp
b25BbHRlcm5hdGl2ZT4gZGljdGF0aW9uQWx0ZXJuYXRpdmVzKSAtPiAoYm9vbCBoYW5kbGVkLCBX
ZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIEluc2VydFRleHQoU3RyaW5nIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCkgLT4gKGJvb2wgaGFuZGxlZCwgV2ViS2l0
OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKLSAgICBTZXRDb21wb3NpdGlvbihTdHJpbmcgdGV4dCwg
VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRf
dCBzZWxlY3Rpb25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNl
bWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpIC0+IChXZWJLaXQ6
OkVkaXRvclN0YXRlIG5ld1N0YXRlKQorICAgIEluc2VydFRleHQoU3RyaW5nIHRleHQsIHVpbnQ2
NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUxlbmd0
aCkgLT4gKGJvb2wgaGFuZGxlZCwgV2ViS2l0OjpFZGl0b3JTdGF0ZSBuZXdTdGF0ZSkKKyAgICBT
ZXRDb21wb3NpdGlvbihTdHJpbmcgdGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5k
ZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rpb25TdGFydCwgdWludDY0X3Qgc2Vs
ZWN0aW9uTGVuZ3RoLCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHVpbnQ2NF90IHJl
cGxhY2VtZW50UmFuZ2VMZW5ndGgpIC0+IChXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRlKQog
ICAgIENvbmZpcm1Db21wb3NpdGlvbigpIC0+IChXZWJLaXQ6OkVkaXRvclN0YXRlIG5ld1N0YXRl
KQogI2VuZGlmCiAgICAgU2V0TWluaW11bUxheW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBtaW5p
bXVtTGF5b3V0U2l6ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDE2NTc0OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTY2LDEyICsxNjYsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ29tcGxleFRleHRJbnB1
dFRvUGx1ZwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCB1aW50NjRfdCBz
ZWxlY3Rpb25FbmQpCit2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
dGV4dCwgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1
aW50NjRfdCBzZWxlY3Rpb25TdGFydCwgdWludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoKQogewogICAg
IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50
RWRpdGFibGUoKSkKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwg
dW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgICAgIGZyYW1l
LmVkaXRvcigpLnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0
LCBzZWxlY3Rpb25TdGFydCArIHNlbGVjdGlvbkxlbmd0aCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Y29uZmlybUNvbXBvc2l0aW9uKCkKQEAgLTIwMSwxMiArMjAxLDEyIEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFJhbmdlPiBjb252ZXJ0VG9SYW5nZSgKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudE9yRG9jdW1lbnRFbGVtZW50KCksIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3Ro
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlRW5k
KQordm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3Qg
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoKQog
ewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgCiAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2VTdGFydCAhPSBOU05v
dEZvdW5kKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNvbnZl
cnRUb1JhbmdlKCZmcmFtZSwgTlNNYWtlUmFuZ2UocmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBs
YWNlbWVudFJhbmdlRW5kIC0gcmVwbGFjZW1lbnRSYW5nZVN0YXJ0KSk7CisgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IGNvbnZlcnRUb1JhbmdlKCZmcmFtZSwgTlNNYWtl
UmFuZ2UocmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoKSk7CiAg
ICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQogICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwg
U0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxNjU3
NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gY29u
dmVydFRvUmFuZ2UoRnJhbWUqLCBOU1JhbmdlKTsKK3N0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBj
b252ZXJ0VG9SYW5nZShGcmFtZSosIHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgp
OwogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7CkBAIC0yNDcsMTggKzI0
NywxOCBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnCiAgICAgfQog
fQogCi12b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rpb25T
dGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkK
K3ZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIHVpbnQ2NF90IHNlbGVjdGlvblN0YXJ0
LCB1aW50NjRfdCBzZWxlY3Rpb25MZW5ndGgsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZUxlbmd0aCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRl
KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
aXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50
UmFuZ2U7CiAgICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkg
ewotICAgICAgICAgICAgcmVwbGFjZW1lbnRSYW5nZSA9IGNvbnZlcnRUb1JhbmdlKCZmcmFtZSwg
TlNNYWtlUmFuZ2UocmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kIC0g
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0KSk7CisgICAgICAgICAgICByZXBsYWNlbWVudFJhbmdlID0g
Y29udmVydFRvUmFuZ2UoJmZyYW1lLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50
UmFuZ2VMZW5ndGgpOwogICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZG
SU5JVFkpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0
aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOworICAg
ICAgICBmcmFtZS5lZGl0b3IoKS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxl
Y3Rpb25TdGFydCwgc2VsZWN0aW9uU3RhcnQgKyBzZWxlY3Rpb25MZW5ndGgpOwogICAgIH0KIAog
ICAgIG5ld1N0YXRlID0gZWRpdG9yU3RhdGUoKTsKQEAgLTI3OCwxMiArMjc4LDEyIEBAIHZvaWQg
V2ViUGFnZTo6Y2FuY2VsQ29tcG9zaXRpb24oRWRpdG9yU3QKICAgICBuZXdTdGF0ZSA9IGVkaXRv
clN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZUVuZCwgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQordm9pZCBXZWJQ
YWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRS
YW5nZVN0YXJ0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoLCBib29sJiBoYW5kbGVk
LCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIGlmIChyZXBsYWNl
bWVudFJhbmdlU3RhcnQgIT0gTlNOb3RGb3VuZCkgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJl
cGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0VG9SYW5nZSgmZnJhbWUsIE5TTWFrZVJhbmdlKHJlcGxh
Y2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCAtIHJlcGxhY2VtZW50UmFuZ2VT
dGFydCkpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBjb252ZXJ0
VG9SYW5nZSgmZnJhbWUsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUxl
bmd0aCk7CiAgICAgICAgIGlmIChyZXBsYWNlbWVudFJhbmdlKQogICAgICAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5n
ZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CkBAIC0zMDAsMTIgKzMwMCwx
MiBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0CiAgICAgbmV3U3Rh
dGUgPSBlZGl0b3JTdGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgdWlu
dDY0X3QgcmVwbGFjZW1lbnRSYW5nZUVuZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRpY3RhdGlv
bkFsdGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVMb2NhdGlvbnMsIGJvb2wmIGhhbmRs
ZWQsIEVkaXRvclN0YXRlJiBuZXdTdGF0ZSkKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCB1
aW50NjRfdCByZXBsYWNlbWVudFJhbmdlTGVuZ3RoLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RGlj
dGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZUxvY2F0aW9ucywgYm9vbCYg
aGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5ld1N0YXRlKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAo
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0ICE9IE5TTm90Rm91bmQpIHsKLSAgICAgICAgUmVmUHRyPFJh
bmdlPiByZXBsYWNlbWVudFJhbmdlID0gY29udmVydFRvUmFuZ2UoJmZyYW1lLCBOU01ha2VSYW5n
ZShyZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQgLSByZXBsYWNlbWVu
dFJhbmdlU3RhcnQpKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0g
Y29udmVydFRvUmFuZ2UoJmZyYW1lLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50
UmFuZ2VMZW5ndGgpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKICAgICAgICAgICAg
IGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2Vt
ZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgfQpAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYKICAgICB9
CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50
NjRfdCByYW5nZVN0YXJ0LCB1aW50NjRfdCByYW5nZUVuZCwgQXR0cmlidXRlZFN0cmluZyYgcmVz
dWx0KQordm9pZCBXZWJQYWdlOjpnZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKHVpbnQ2
NF90IHJhbmdlU3RhcnQsIHVpbnQ2NF90IHJhbmdlTGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5nJiBy
ZXN1bHQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKIApAQCAtMzU1LDggKzM1NSw3IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb20KICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpIHx8
ICFzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSB8fCBzZWxlY3Rpb24uaXNJblBhc3N3b3Jk
RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNSYW5nZSBuc1JhbmdlID0gTlNNYWtl
UmFuZ2UocmFuZ2VTdGFydCwgcmFuZ2VFbmQgLSByYW5nZVN0YXJ0KTsKLSAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gY29udmVydFRvUmFuZ2UoJmZyYW1lLCBuc1JhbmdlKTsKKyAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gY29udmVydFRvUmFuZ2UoJmZyYW1lLCByYW5nZVN0YXJ0LCByYW5nZUxl
bmd0aCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjYsMTAgKzM2
NSwxMCBAQCB2b2lkIFdlYlBhZ2U6OmdldEF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tCiAgICAgLy8g
W1dlYkhUTUxDb252ZXJ0ZXIgZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2U6XSBpbnNp
c3RzIG9uIGluc2VydGluZyBhIHRyYWlsaW5nIAogICAgIC8vIHdoaXRlc3BhY2UgYXQgdGhlIGVu
ZCBvZiB0aGUgc3RyaW5nIHdoaWNoIGJyZWFrcyB0aGUgQVRPSyBpbnB1dCBtZXRob2QuICA8cmRh
cjovL3Byb2JsZW0vNTQwMDU1MT4KICAgICAvLyBUbyB3b3JrIGFyb3VuZCB0aGlzIHdlIHRydW5j
YXRlIHRoZSByZXN1bHRhbnQgc3RyaW5nIHRvIHRoZSBjb3JyZWN0IGxlbmd0aC4KLSAgICBpZiAo
W2F0dHJpYnV0ZWRTdHJpbmcgbGVuZ3RoXSA+IG5zUmFuZ2UubGVuZ3RoKSB7Ci0gICAgICAgIEFT
U0VSVChbYXR0cmlidXRlZFN0cmluZyBsZW5ndGhdID09IG5zUmFuZ2UubGVuZ3RoICsgMSk7Ci0g
ICAgICAgIEFTU0VSVChbW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSBjaGFyYWN0ZXJBdEluZGV4
Om5zUmFuZ2UubGVuZ3RoXSA9PSAnXG4nIHx8IFtbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddIGNo
YXJhY3RlckF0SW5kZXg6bnNSYW5nZS5sZW5ndGhdID09ICcgJyk7Ci0gICAgICAgIHJlc3VsdC5z
dHJpbmcgPSBbYXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIG5zUmFuZ2UubGVuZ3RoKV07CisgICAgaWYgKFthdHRyaWJ1dGVkU3RyaW5n
IGxlbmd0aF0gPiByYW5nZUxlbmd0aCkgeworICAgICAgICBBU1NFUlQoW2F0dHJpYnV0ZWRTdHJp
bmcgbGVuZ3RoXSA9PSByYW5nZUxlbmd0aCArIDEpOworICAgICAgICBBU1NFUlQoW1thdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZ10gY2hhcmFjdGVyQXRJbmRleDpyYW5nZUxlbmd0aF0gPT0gJ1xuJyB8
fCBbW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXSBjaGFyYWN0ZXJBdEluZGV4OnJhbmdlTGVuZ3Ro
XSA9PSAnICcpOworICAgICAgICByZXN1bHQuc3RyaW5nID0gW2F0dHJpYnV0ZWRTdHJpbmcgYXR0
cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZTpOU01ha2VSYW5nZSgwLCByYW5nZUxlbmd0aCldOwog
ICAgIH0KIH0KIApAQCAtMzkwLDEyICszODksMTIgQEAgdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJ
bmRleEZvclBvaW50KEludAogICAgICAgICBpbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihs
b2NhdGlvbik7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+IGNvbnZlcnRUb1JhbmdlKEZyYW1lKiBm
cmFtZSwgTlNSYW5nZSBuc3JhbmdlKQorUGFzc1JlZlB0cjxSYW5nZT4gY29udmVydFRvUmFuZ2Uo
RnJhbWUqIGZyYW1lLCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKQogewotICAg
IGlmIChuc3JhbmdlLmxvY2F0aW9uID4gSU5UX01BWCkKKyAgICBpZiAobG9jYXRpb24gPiBJTlRf
TUFYKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobnNyYW5nZS5sZW5ndGggPiBJTlRfTUFY
IHx8IG5zcmFuZ2UubG9jYXRpb24gKyBuc3JhbmdlLmxlbmd0aCA+IElOVF9NQVgpCi0gICAgICAg
IG5zcmFuZ2UubGVuZ3RoID0gSU5UX01BWCAtIG5zcmFuZ2UubG9jYXRpb247CisgICAgaWYgKGxl
bmd0aCA+IElOVF9NQVggfHwgbG9jYXRpb24gKyBsZW5ndGggPiBJTlRfTUFYKQorICAgICAgICBs
ZW5ndGggPSBJTlRfTUFYIC0gbG9jYXRpb247CiAgICAgICAgIAogICAgIC8vIG91ciBjcml0aWNh
bCBhc3N1bXB0aW9uIGlzIHRoYXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMg
dGhhdAogICAgIC8vIGNvbmNlbnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBz
ZWxlY3Rpb24KQEAgLTQwMyw3ICs0MDIsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBjb252ZXJ0VG9S
YW5nZShGcmFtZSogCiAgICAgLy8gZGlyZWN0bHkgaW4gdGhlIGRvY3VtZW50IERPTSwgc28gc2Vy
aWFsaXphdGlvbiBpcyBwcm9ibGVtYXRpYy4gT3VyIHNvbHV0aW9uIGlzCiAgICAgLy8gdG8gdXNl
IHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgb2YgdGhlIHNlbGVjdGlvbiBzdGFydCBhcyB0aGUg
cG9zaXRpb25hbCBiYXNlLgogICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2Yg
YW4gaW5wdXQgY29udGV4dC4KLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChmcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9j
dW1lbnRFbGVtZW50KCksIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2UubGVuZ3RoKTsKKyAgICBy
ZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChmcmFtZS0+c2Vs
ZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIGxvY2F0aW9u
LCBsZW5ndGgpOwogfQogICAgIAogdm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBXZWJDb3JlOjpJbnRSZWN0
JiByZXN1bHRSZWN0KQpAQCAtNDEyLDcgKzQxMSw3IEBAIHZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UKICAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKEludFBvaW50KDAs
IDApKTsKICAgICByZXN1bHRSZWN0LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7CiAgICAgCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGNvbnZlcnRUb1JhbmdlKCZmcmFtZSwgTlNNYWtlUmFuZ2Uo
bG9jYXRpb24sIGxlbmd0aCkpOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBjb252ZXJ0VG9S
YW5nZSgmZnJhbWUsIGxvY2F0aW9uLCBsZW5ndGgpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAg
IHJldHVybjsKICAgICAK
</data>
<flag name="review"
          id="251197"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>