<?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>46971</bug_id>
          
          <creation_ts>2010-10-01 03:36:21 -0700</creation_ts>
          <short_desc>Rename SVGTextLayoutBuilder to SVGTextLayoutAttributesBuilder</short_desc>
          <delta_ts>2010-10-01 03:45:42 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45532</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>mdelaney7</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288148</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 03:36:21 -0700</bug_when>
    <thetext>Rename the class, to what it actually does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288149</commentid>
    <comment_count>1</comment_count>
      <attachid>69443</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 03:39:48 -0700</bug_when>
    <thetext>Created attachment 69443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288152</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 03:45:42 -0700</bug_when>
    <thetext>Landed in r68876.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69443</attachid>
            <date>2010-10-01 03:39:48 -0700</date>
            <delta_ts>2010-10-01 03:44:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Moves.diff</filename>
            <type>text/plain</type>
            <size>34426</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODg3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTAtMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVuYW1lIFNWR1RleHRMYXlvdXRCdWlsZGVyIHRvIFNWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDY5NzEKKworICAgICAgICBEb2Vzbid0IGFmZmVjdCBhbnkgZnVuY3Rpb25hbGl0eSwganVz
dCBtb3ZlcyBmaWxlcyBhcm91bmQuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxheW91dCk6IEFkb3B0IHRvIHJlbmFtaW5n
LgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVy
LmNwcDogQ29waWVkIGZyb20gcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIu
aDogQ29waWVkIGZyb20gcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5oLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1aWxkZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEJ1aWxkZXIuaDogUmVtb3ZlZC4K
KwogMjAxMC0xMC0wMSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpJbmRleDogV2ViQ29yZS9BbmRy
b2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNjg4NzQp
CisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkKQEAgLTcxNyw3ICs3MTcsNyBA
QCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlyZW5kZXJpbmcvc3Zn
L1NWR1Jvb3RJbmxpbmVCb3guY3BwIFwKIAlyZW5kZXJpbmcvc3ZnL1NWR1RleHRDaHVuay5jcHAg
XAogCXJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwIFwKLQlyZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcCBcCisJcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwIFwKIAlyZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzLmNwcCBcCiAJcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCiBlbmRpZgpJbmRleDog
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiA2ODg3NCkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MDcsNyArMTcwNyw3IEBAIElGIChFTkFCTEVfU1ZHKQogICAgICAgICByZW5k
ZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dENodW5rLmNwcAogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzLmNwcAotICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcAor
ICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAK
ICAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5jcHAKICAgICAgICAgcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCiAgICAgICAgIHN2Zy9Db2xvckRpc3RhbmNlLmNwcApJ
bmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA2ODg3NCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4MTQsOCArMjgxNCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVudC5oIFwKIAlXZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRCdWlsZGVyLmNwcCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRCdWlsZGVyLmggXAorCVdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXNCdWlsZGVyLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljcy5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oIFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcCBcCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gNjg4NzQpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzQ1
Niw4ICszNDU2LDggQEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRGcmFnbWVu
dC5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
cy5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRCdWlsZGVyLmNw
cCcsCi0gICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5oJywK
KyAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3Mu
Y3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgnLAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcCcsCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9u
IDY4ODc0KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjMwMCw3
ICsyMzAwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0Q2h1bmsu
aCBcCiAgICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0RnJhZ21lbnQuaCBcCiAgICAgcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIFwKLSAgICByZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRCdWlsZGVyLmggXAorICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXNCdWlsZGVyLmggXAogICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaCBcCiAg
ICAgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuaCBcCiAgICAgcmVuZGVyaW5nL1NWR0NoYXJh
Y3RlckRhdGEuaCBcCkBAIC0zMjg4LDcgKzMyODgsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfU1ZHPTEpIHsKICAgICAgICAgcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcCBc
CiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rLmNwcCBcCiAgICAgICAgIHJlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwIFwKLSAgICAgICAgcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAgXAorICAgICAgICByZW5kZXJpbmcvc3ZnL1NW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAgXAogICAgICAgICByZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzLmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5
LmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIFwKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjg4NzQpCisr
KyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzQ3OCwxMSArMzM0NzgsMTEgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHVGV4dExheW91dEJ1aWxk
ZXIuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXHN2Z1xTVkdUZXh0TGF5b3V0QnVp
bGRlci5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDY4ODc0KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDggQEAKIAkJMDgwQUVDODQwRUQ4NzA4QjAwREY0
Q0NFIC8qIFdNTEludHJpbnNpY0V2ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwQUVDODAwRUQ4NzA4QjAwREY0Q0NFIC8qIFdNTElu
dHJpbnNpY0V2ZW50SGFuZGxlci5oICovOyB9OwogCQkwODBGQUUxQTBFRUVCREE4MDBBQUNERTkg
LyogV01MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4MEZBRTE4MEVFRUJEQTgwMEFBQ0RFOSAvKiBXTUxUZW1wbGF0ZUVs
ZW1lbnQuY3BwICovOyB9OwogCQkwODBGQUUxQjBFRUVCREE4MDBBQUNERTkgLyogV01MVGVtcGxh
dGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODBGQUUxOTBFRUVCREE4MDBBQUNERTkgLyogV01MVGVtcGxhdGVFbGVtZW50LmggKi87IH07
CisJCTA4MTA5M0RCMTI1NUYwRTcwMEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDgxMDkzRDkxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5jcHAgKi87IH07CisJCTA4MTA5M0RDMTI1NUYwRTcwMEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MTA5M0RBMTI1NUYwRTcwMEVEOUQyOSAvKiBTVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuaCAqLzsgfTsKIAkJMDgxOEFFRTIwRURCODZCQzAwNjQ3QjY2IC8qIFdNTEV2
ZW50SGFuZGxpbmdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4MThBRUUwMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5n
RWxlbWVudC5jcHAgKi87IH07CiAJCTA4MThBRUUzMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVu
dEhhbmRsaW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDgxOEFFRTEwRURCODZCQzAwNjQ3QjY2IC8qIFdNTEV2ZW50SGFuZGxpbmdFbGVt
ZW50LmggKi87IH07CiAJCTA4MUFBOERBMTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFy
ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLzsgfTsKQEAg
LTE3MCw4ICsxNzIsNiBAQAogCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2
N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhDMkY3OTEyMzkwMDgxMDAzRDY1Q0UgLyog
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDg4QzJGNzUxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzLmNwcCAqLzsgfTsKIAkJMDg4QzJGN0ExMjM5MDA4MTAwM0Q2NUNFIC8qIFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXMuaCAqLzsgfTsKLQkJMDg4QzJGN0IxMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRM
YXlvdXRCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4OEMyRjc3MTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QnVpbGRlci5j
cHAgKi87IH07Ci0JCTA4OEMyRjdDMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4
QzJGNzgxMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRCdWlsZGVyLmggKi87IH07CiAJ
CTA4OEM5NzEyMEVDQjZEOTIwMDA1MzRCQSAvKiBXTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Q0EzQUI0OTBFNTU2RjI0MDBFOUMwQzAg
LyogV01MTmFtZXMuY3BwICovOyB9OwogCQkwODhDOTcxMzBFQ0I2RDlEMDAwNTM0QkEgLyogV01M
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRD
QTNBQjQ4MEU1NTZGMjQwMEU5QzBDMCAvKiBXTUxOYW1lcy5oICovOyB9OwogCQkwODhDOTc1MTBF
Q0I2RTI4MDAwNTM0QkEgLyogV01MQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEM2Qjk5MTgwRTUyRTM3MzAwNDg3QkI3IC8qIFdNTEFF
bGVtZW50LmNwcCAqLzsgfTsKQEAgLTYwMDksNiArNjAwOSw4IEBACiAJCTA4MEFFQzgwMEVEODcw
OEIwMERGNENDRSAvKiBXTUxJbnRyaW5zaWNFdmVudEhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV01MSW50cmluc2ljRXZlbnRIYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4MEZBRTE4MEVFRUJEQTgwMEFBQ0RFOSAvKiBXTUxUZW1wbGF0
ZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MVGVt
cGxhdGVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRkFFMTkw
RUVFQkRBODAwQUFDREU5IC8qIFdNTFRlbXBsYXRlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXTUxUZW1wbGF0ZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDgxMDkzRDkxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwODEwOTNEQTEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0
ZXNCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODE4
QUVFMDBFREI4NkJDMDA2NDdCNjYgLyogV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODE4QUVFMTBFREI4NkJDMDA2NDdC
NjYgLyogV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDgxQUE4RDkxMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50UmFyZURhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMTEsOCArNjExMyw2IEBACiAJCTA4ODUw
NjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhaW50UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDg4QzJGNzUxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QzJGNzYxMjM5MDA4MDAw
M0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA4OEMyRjc3MTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QnVp
bGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5
b3V0QnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4OEMyRjc4MTIz
OTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdUZXh0TGF5b3V0QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODkzRTQ2NTBFQ0I2OEY0MDBBMjg1NjMgLyogV01MUGFnZVN0YXRlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdNTFBhZ2VTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OTNFNDY2MEVDQjY4RjQwMEEyODU2MyAv
KiBXTUxQYWdlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MUGFn
ZVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OTU4MjUzMEU4NTdBN0Uw
MEY4MkM4MyAvKiBJbWFnZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbWFnZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTY1OSw4ICsxMTY1OSw4IEBACiAJCQkJMDhGMEJGQkYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1Rl
eHRGcmFnbWVudC5oICovLAogCQkJCTA4OEMyRjc1MTIzOTAwODAwMDNENjVDRSAvKiBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMDg4QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8q
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggKi8sCi0JCQkJMDg4QzJGNzcxMjM5MDA4MTAwM0Q2
NUNFIC8qIFNWR1RleHRMYXlvdXRCdWlsZGVyLmNwcCAqLywKLQkJCQkwODhDMkY3ODEyMzkwMDgx
MDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEJ1aWxkZXIuaCAqLywKKwkJCQkwODEwOTNEOTEyNTVG
MEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcCAqLywKKwkJ
CQkwODEwOTNEQTEyNTVGMEU3MDBFRDlEMjkgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmggKi8sCiAJCQkJMDhGMEJGQzAxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNz
LmNwcCAqLywKIAkJCQkwOEYwQkZDMTEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dE1ldHJpY3Mu
aCAqLywKIAkJCQkwODU0QjAxMjEyNTVFNEU2MDBCOUNERDAgLyogU1ZHVGV4dFF1ZXJ5LmNwcCAq
LywKQEAgLTIwNjYxLDcgKzIwNjYxLDYgQEAKIAkJCQlCMjIyN0FDODBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FDQjBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMDg4QzJGN0MxMjM5MDA4MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODNGNTI5QTExOTU3RkJFMDA2NTNFQkUgLyog
U1ZHVGV4dExheW91dFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQ0UwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR1RleHRQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBRDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjA5MzcsNiArMjA5MzYsNyBAQAogCQkJCTA4NTRCMDIxMTI1NUU0
RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODU0
QjAyMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDg1NEIwMjUxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1RleHRRdWVyeS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDgxMDkzREMxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMzIzMSw3ICsyMzIzMSw2IEBACiAJ
CQkJQjIyMjdBQzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1RleHRDb250ZW50RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FDQTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHVGV4dEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg4QzJGNzkxMjM5MDA4MTAwM0Q2NUNFIC8q
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA4OEMyRjdC
MTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QnVpbGRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwODNGNTI5OTExOTU3RkJFMDA2NTNFQkUgLyogU1ZHVGV4dExheW91dFV0aWxpdGll
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FDRDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUQwMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMjM0NjMsNiArMjM0NjIsNyBAQAogCQkJCTA4NTRCMDIwMTI1NUU0RTYwMEI5Q0REMCAvKiBT
VkdJbmxpbmVUZXh0Qm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NTRCMDIyMTI1NUU0RTYw
MEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NTRC
MDI0MTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDgxMDkzREIxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVp
bGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAJKHJldmlzaW9uIDY4ODc0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVk
ZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgogI2luY2x1ZGUgIlNWR1Jvb3RJbmxpbmVCb3guaCIKICNp
bmNsdWRlICJTVkdUZXh0RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RleHRMYXlvdXRCdWlsZGVy
LmgiCisjaW5jbHVkZSAiU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmgiCiAjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgUmVuZGVyU1ZH
VGV4dDo6bGF5b3V0KCkKICAgICAgICAgdXBkYXRlQ2FjaGVkQm91bmRhcmllc0luUGFyZW50cyA9
IHRydWU7CiAgICAgfQogCi0gICAgU1ZHVGV4dExheW91dEJ1aWxkZXIgbGF5b3V0QnVpbGRlcjsK
LSAgICBsYXlvdXRCdWlsZGVyLmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRTdWJ0cmVlKHRo
aXMpOworICAgIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlciBsYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlcjsKKyAgICBsYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5idWlsZExheW91dEF0dHJpYnV0
ZXNGb3JUZXh0U3VidHJlZSh0aGlzKTsKIAogICAgIC8vIFJlZHVjZWQgdmVyc2lvbiBvZiBSZW5k
ZXJCbG9jazo6bGF5b3V0QmxvY2soKSwgd2hpY2ggb25seSB0YWtlcyBjYXJlIG9mIFNWRyB0ZXh0
LgogICAgIC8vIEFsbCBpZiBicmFuY2hlcyB0aGF0IGNvdWxkIGNhdXNlIGVhcmx5IGV4aXQgaW4g
UmVuZGVyQmxvY2tzIGxheW91dEJsb2NrKCkgbWV0aG9kIGFyZSB0dXJuZWQgaW50byBhc3NlcnRp
b25zLgpJbmRleDogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyLmNwcAkocmV2aXNpb24gNjg4NjcpCShmcm9tIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEJ1aWxkZXIuY3BwOjY4ODY3KQorKysgcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0
cmlidXRlc0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAko
cmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXNCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdUZXh0TGF5
b3V0QnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5o
IgogCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1RleHQuaCIKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNW
R1RleHRMYXlvdXRCdWlsZGVyOjpTVkdUZXh0TGF5b3V0QnVpbGRlcigpCitTVkdUZXh0TGF5b3V0
QXR0cmlidXRlc0J1aWxkZXI6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcigpCiB7CiB9
CiAKLXZvaWQgU1ZHVGV4dExheW91dEJ1aWxkZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRl
eHRTdWJ0cmVlKFJlbmRlclNWR1RleHQqIHRleHRSb290KQordm9pZCBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlc0J1aWxkZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRTdWJ0cmVlKFJlbmRl
clNWR1RleHQqIHRleHRSb290KQogewogICAgIEFTU0VSVCh0ZXh0Um9vdCk7CiAgICAgbV9zY29w
ZXMuY2xlYXIoKTsKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvcHlUb0Rl
c3RpbmF0aW9uVmVjdAogICAgIGNvcHlUb0Rlc3RpbmF0aW9uVmVjdG9yKGRlc3RpbmF0aW9uLCBk
ZXN0aW5hdGlvblN0YXJ0T2Zmc2V0LCBzb3VyY2UsIHNvdXJjZVN0YXJ0T2Zmc2V0LCBsZW5ndGgp
OwogfQogCi12b2lkIFNWR1RleHRMYXlvdXRCdWlsZGVyOjpwcm9wYWdhdGVMYXlvdXRBdHRyaWJ1
dGVzKFJlbmRlck9iamVjdCogc3RhcnQsIHVuc2lnbmVkJiBhdENoYXJhY3RlcikKK3ZvaWQgU1ZH
VGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpwcm9wYWdhdGVMYXlvdXRBdHRyaWJ1dGVzKFJl
bmRlck9iamVjdCogc3RhcnQsIHVuc2lnbmVkJiBhdENoYXJhY3RlcikKIHsKICAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSBzdGFydC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkgeyAKICAgICAgICAgaWYgKCFjaGlsZC0+aXNTVkdJbmxpbmVU
ZXh0KCkpIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFNWR1RleHRMYXlvdXRCdWlsZGVyOjpw
cm9wYWdhdGVMYXlvCiAgICAgfQogfQogCi12b2lkIFNWR1RleHRMYXlvdXRCdWlsZGVyOjpidWls
ZExheW91dFNjb3BlcyhSZW5kZXJPYmplY3QqIHN0YXJ0LCB1bnNpZ25lZCYgYXRDaGFyYWN0ZXIp
Cit2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRTY29wZXMo
UmVuZGVyT2JqZWN0KiBzdGFydCwgdW5zaWduZWQmIGF0Q2hhcmFjdGVyKQogewogICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7IAogICAgICAgICBpZiAoY2hpbGQtPmlzU1ZHSW5saW5l
VGV4dCgpKSB7CkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxEZXN0
aW5hdGlvblZlY3RvcgogICAgIH0KIH0KIAotdm9pZCBTVkdUZXh0TGF5b3V0QnVpbGRlcjo6YnVp
bGRMYXlvdXRBdHRyaWJ1dGVzRnJvbVNjb3BlcygpCit2b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzQnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRnJvbVNjb3BlcygpCiB7CiAgICAgQVNT
RVJUKCFtX3Njb3Blcy5pc0VtcHR5KCkpOwogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBTVkdU
ZXh0TGF5b3V0QnVpbGRlcjo6YnVpbGRMYXlvdXRBdAogICAgIH0KIH0KIAotdm9pZCBTVkdUZXh0
TGF5b3V0QnVpbGRlcjo6bWVhc3VyZUNoYXJhY3RlcnMoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4
dCwgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit2b2lkIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlcjo6bWVhc3VyZUNoYXJhY3RlcnMoUmVuZGVyU1ZHSW5saW5lVGV4
dCogdGV4dCwgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNT
RVJUKHRleHQpOwogICAgIEFTU0VSVCh0ZXh0LT5zdHlsZSgpKTsKQEAgLTI3OCw3ICsyNzgsNyBA
QCBzdGF0aWMgaW5saW5lIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqPihub2RlKTsKIH0KIAotdm9pZCBT
VkdUZXh0TGF5b3V0QnVpbGRlcjo6YnVpbGRMYXlvdXRTY29wZShMYXlvdXRTY29wZSYgc2NvcGUs
IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIHVuc2lnbmVkIHRleHRDb250ZW50U3RhcnQsIHVuc2ln
bmVkIHRleHRDb250ZW50TGVuZ3RoKQordm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxk
ZXI6OmJ1aWxkTGF5b3V0U2NvcGUoTGF5b3V0U2NvcGUmIHNjb3BlLCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCB1bnNpZ25lZCB0ZXh0Q29udGVudFN0YXJ0LCB1bnNpZ25lZCB0ZXh0Q29udGVudExl
bmd0aCkKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogICAgIEFTU0VSVChyZW5kZXJlci0+c3R5
bGUoKSk7CkluZGV4OiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyLmgJKHJldmlzaW9uIDY4ODY3KQkoZnJvbSByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRCdWlsZGVyLmg6Njg4NjcpCisrKyByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oCShyZXZpc2lvbiA2
ODg2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsOCArMTcsOCBAQAogICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBTVkdUZXh0TGF5b3V0QnVpbGRlcl9oCi0j
ZGVmaW5lIFNWR1RleHRMYXlvdXRCdWlsZGVyX2gKKyNpZm5kZWYgU1ZHVGV4dExheW91dEF0dHJp
YnV0ZXNCdWlsZGVyX2gKKyNkZWZpbmUgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyX2gK
IAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCIK
QEAgLTMwLDkgKzMwLDkgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU1ZHSW5s
aW5lVGV4dDsKIGNsYXNzIFJlbmRlclNWR1RleHQ7CiAKLWNsYXNzIFNWR1RleHRMYXlvdXRCdWls
ZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK2NsYXNzIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgU1ZHVGV4dExheW91
dEJ1aWxkZXIoKTsKKyAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIoKTsKICAgICB2
b2lkIGJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRTdWJ0cmVlKFJlbmRlclNWR1RleHQqKTsK
IAogcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QnVp
bGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRCdWlsZGVyLmNwcAkocmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZH
KQotI2luY2x1ZGUgIlNWR1RleHRMYXlvdXRCdWlsZGVyLmgiCi0KLSNpbmNsdWRlICJSZW5kZXJT
VkdJbmxpbmVUZXh0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgotI2luY2x1ZGUgIlNW
R1RleHRMYXlvdXRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmgiCi0KLS8vIFNldCB0byBhIHZhbHVlID4gMCB0byBkdW1wIHRoZSBsYXlvdXQgdmVjdG9y
cwotI2RlZmluZSBEVU1QX0xBWU9VVF9WRUNUT1JTIDAKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1TVkdUZXh0TGF5b3V0QnVpbGRlcjo6U1ZHVGV4dExheW91dEJ1aWxkZXIoKQotewotfQotCi12
b2lkIFNWR1RleHRMYXlvdXRCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0U3Vi
dHJlZShSZW5kZXJTVkdUZXh0KiB0ZXh0Um9vdCkKLXsKLSAgICBBU1NFUlQodGV4dFJvb3QpOwot
ICAgIG1fc2NvcGVzLmNsZWFyKCk7Ci0KLSAgICAvLyBCdWlsZCBsYXlvdXQgc2NvcGVzLgotICAg
IHVuc2lnbmVkIGF0Q2hhcmFjdGVyID0gMDsKLSAgICBidWlsZExheW91dFNjb3Blcyh0ZXh0Um9v
dCwgYXRDaGFyYWN0ZXIpOwotCi0gICAgaWYgKCFhdENoYXJhY3RlcikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gQWRkIG91dGVybW9zdCBzY29wZSwgYWZ0ZXIgdGV4dCBsZW5ndGggaXMga25v
d24uCi0gICAgTGF5b3V0U2NvcGUgc2NvcGU7Ci0gICAgYnVpbGRMYXlvdXRTY29wZShzY29wZSwg
dGV4dFJvb3QsIDAsIGF0Q2hhcmFjdGVyKTsKLSAgICBtX3Njb3Blcy5wcmVwZW5kKHNjb3BlKTsK
LQotICAgIC8vIEJ1aWxkIGxheW91dCBpbmZvcm1hdGlvbiByZXNwZWN0aW5nIHNjb3BlIG9mIGF0
dHJpYnV0ZSB2YWx1ZXMuCi0gICAgYnVpbGRMYXlvdXRBdHRyaWJ1dGVzRnJvbVNjb3BlcygpOwot
Ci0gICAgYXRDaGFyYWN0ZXIgPSAwOwotICAgIHByb3BhZ2F0ZUxheW91dEF0dHJpYnV0ZXModGV4
dFJvb3QsIGF0Q2hhcmFjdGVyKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGNvcHlUb0Rlc3Rp
bmF0aW9uVmVjdG9yKFZlY3RvcjxmbG9hdD4mIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBkZXN0aW5h
dGlvblN0YXJ0T2Zmc2V0LCBWZWN0b3I8ZmxvYXQ+JiBzb3VyY2UsIHVuc2lnbmVkIHNvdXJjZVN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKGRlc3RpbmF0aW9uU3Rh
cnRPZmZzZXQgKyBsZW5ndGggPD0gZGVzdGluYXRpb24uc2l6ZSgpKTsKLQotICAgIFZlY3Rvcjxm
bG9hdD46Oml0ZXJhdG9yIHNvdXJjZUJlZ2luID0gc291cmNlLmJlZ2luKCkgKyBzb3VyY2VTdGFy
dE9mZnNldDsKLSAgICBzdGQ6OmNvcHkoc291cmNlQmVnaW4sIHNvdXJjZUJlZ2luICsgbGVuZ3Ro
LCBkZXN0aW5hdGlvbi5iZWdpbigpICsgZGVzdGluYXRpb25TdGFydE9mZnNldCk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCBjb3B5VG9EZXN0aW5hdGlvblZlY3RvcklmU291cmNlUmFuZ2VJc05v
dEVtcHR5KFZlY3RvcjxmbG9hdD4mIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBkZXN0aW5hdGlvblN0
YXJ0T2Zmc2V0LCBWZWN0b3I8ZmxvYXQ+JiBzb3VyY2UsIHVuc2lnbmVkIHNvdXJjZVN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgYm9vbCByYW5nZUVtcHR5ID0gdHJ1ZTsKLQot
ICAgIHVuc2lnbmVkIHNpemUgPSBzb3VyY2VTdGFydE9mZnNldCArIGxlbmd0aDsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzb3VyY2VTdGFydE9mZnNldDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICBpZiAoc291cmNlLmF0KGkpID09IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVl
KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmFuZ2VFbXB0eSA9IGZhbHNlOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAocmFuZ2VFbXB0eSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZGVzdGluYXRpb24ucmVzaXplKGxlbmd0aCk7Ci0gICAgY29weVRvRGVzdGlu
YXRpb25WZWN0b3IoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU3RhcnRPZmZzZXQsIHNvdXJjZSwg
c291cmNlU3RhcnRPZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgU1ZHVGV4dExheW91dEJ1aWxk
ZXI6OnByb3BhZ2F0ZUxheW91dEF0dHJpYnV0ZXMoUmVuZGVyT2JqZWN0KiBzdGFydCwgdW5zaWdu
ZWQmIGF0Q2hhcmFjdGVyKQotewotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHN0YXJ0
LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7IAot
ICAgICAgICBpZiAoIWNoaWxkLT5pc1NWR0lubGluZVRleHQoKSkgewotICAgICAgICAgICAgaWYg
KGNoaWxkLT5pc1NWR0lubGluZSgpKQotICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUxheW91dEF0
dHJpYnV0ZXMoY2hpbGQsIGF0Q2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCA9IHN0YXRpY19jYXN0
PFJlbmRlclNWR0lubGluZVRleHQqPihjaGlsZCk7Ci0gICAgICAgIHVuc2lnbmVkIHRleHRMZW5n
dGggPSB0ZXh0LT50ZXh0TGVuZ3RoKCk7Ci0KLSAgICAgICAgLy8gQnVpbGQgbGF5b3V0IGF0dHJp
YnV0ZXMgZm9yIGEgc2luZ2xlIFJlbmRlclNWR0lubGluZVRleHQgcmVuZGVyZXIuCi0gICAgICAg
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0KLSAgICAgICAgLy8gVGhlIHgg
dmFsdWUgbGlzdCBzaG91bGQgYWx3YXlzIGJlIGFzIGxhcmdlIGFzIHRoZSB0ZXh0IGxlbmd0aC4K
LSAgICAgICAgLy8gQW55IHZhbHVlcyB0aGF0IGFyZSBlbXB0eSB3aWxsIGJlIGZpbGxlZCBpbiBi
eSB0aGUgYWN0dWFsIHRleHQgbGF5b3V0IHByb2Nlc3MgbGF0ZXIsCi0gICAgICAgIC8vIGFzIHdl
IG5lZWQgdG8gYmUgYWJsZSB0byBxdWVyeSB0aGUgeC95IHBvc2l0aW9uIGZvciBldmVyeSBjaGFy
YWN0ZXIgdGhyb3VnaCBTVkcgRE9NLgotICAgICAgICBhdHRyaWJ1dGVzLnhWYWx1ZXMoKS5yZXNp
emUodGV4dExlbmd0aCk7Ci0gICAgICAgIGNvcHlUb0Rlc3RpbmF0aW9uVmVjdG9yKGF0dHJpYnV0
ZXMueFZhbHVlcygpLCAwLCBtX2F0dHJpYnV0ZXMueFZhbHVlcygpLCBhdENoYXJhY3RlciwgdGV4
dExlbmd0aCk7Ci0KLSAgICAgICAgLy8gU2FtZSBmb3IgdGhlIHkgdmFsdWUgbGlzdC4KLSAgICAg
ICAgYXR0cmlidXRlcy55VmFsdWVzKCkucmVzaXplKHRleHRMZW5ndGgpOwotICAgICAgICBjb3B5
VG9EZXN0aW5hdGlvblZlY3RvcihhdHRyaWJ1dGVzLnlWYWx1ZXMoKSwgMCwgbV9hdHRyaWJ1dGVz
LnlWYWx1ZXMoKSwgYXRDaGFyYWN0ZXIsIHRleHRMZW5ndGgpOwotCi0gICAgICAgIC8vIFRoZSBk
eC9keS9yb3RhdGUgdmFsdWUgbGlzdHMgbWF5IGJlIGVtcHR5LgotICAgICAgICBjb3B5VG9EZXN0
aW5hdGlvblZlY3RvcklmU291cmNlUmFuZ2VJc05vdEVtcHR5KGF0dHJpYnV0ZXMuZHhWYWx1ZXMo
KSwgMCwgbV9hdHRyaWJ1dGVzLmR4VmFsdWVzKCksIGF0Q2hhcmFjdGVyLCB0ZXh0TGVuZ3RoKTsK
LSAgICAgICAgY29weVRvRGVzdGluYXRpb25WZWN0b3JJZlNvdXJjZVJhbmdlSXNOb3RFbXB0eShh
dHRyaWJ1dGVzLmR5VmFsdWVzKCksIDAsIG1fYXR0cmlidXRlcy5keVZhbHVlcygpLCBhdENoYXJh
Y3RlciwgdGV4dExlbmd0aCk7Ci0gICAgICAgIGNvcHlUb0Rlc3RpbmF0aW9uVmVjdG9ySWZTb3Vy
Y2VSYW5nZUlzTm90RW1wdHkoYXR0cmlidXRlcy5yb3RhdGVWYWx1ZXMoKSwgMCwgbV9hdHRyaWJ1
dGVzLnJvdGF0ZVZhbHVlcygpLCBhdENoYXJhY3RlciwgdGV4dExlbmd0aCk7Ci0KLSAgICAgICAg
Ly8gQnVpbGQgQ2hhcmFjdGVyRGF0YSwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGRldGVjdCBsaWdh
dHVyZXMsIGhvbGRzIGtlcm5pbmcgcGFpcnMgKGdseXBoIG5hbWUsIHVuaWNvZGUgc3RyaW5nKSBh
bmQgY2hhcmFjdGVyIG1ldHJpY3MuCi0gICAgICAgIG1lYXN1cmVDaGFyYWN0ZXJzKHRleHQsIGF0
dHJpYnV0ZXMpOwotCi0jaWYgRFVNUF9MQVlPVVRfVkVDVE9SUyA+IDAKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICJEdW1waW5nIGxheW91dCB2ZWN0b3IgZm9yIFJlbmRlclNWR0lubGluZVRleHQs
IHJlbmRlcmVyPSVwLCBub2RlPSVwXG4iLCB0ZXh0LCB0ZXh0LT5ub2RlKCkpOwotICAgICAgICBh
dHRyaWJ1dGVzLmR1bXAoKTsKLSNlbmRpZgotCi0gICAgICAgIHRleHQtPnN0b3JlTGF5b3V0QXR0
cmlidXRlcyhhdHRyaWJ1dGVzKTsKLSAgICAgICAgYXRDaGFyYWN0ZXIgKz0gdGV4dC0+dGV4dExl
bmd0aCgpOwotICAgIH0KLX0KLQotdm9pZCBTVkdUZXh0TGF5b3V0QnVpbGRlcjo6YnVpbGRMYXlv
dXRTY29wZXMoUmVuZGVyT2JqZWN0KiBzdGFydCwgdW5zaWduZWQmIGF0Q2hhcmFjdGVyKQotewot
ICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7IAotICAgICAgICBpZiAoY2hpbGQtPmlz
U1ZHSW5saW5lVGV4dCgpKSB7Ci0gICAgICAgICAgICBhdENoYXJhY3RlciArPSB0b1JlbmRlclRl
eHQoY2hpbGQpLT50ZXh0TGVuZ3RoKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICghY2hpbGQtPmlzU1ZHSW5saW5lKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICB1bnNpZ25lZCB0ZXh0Q29udGVudFN0YXJ0ID0gYXRDaGFyYWN0ZXI7
Ci0gICAgICAgIGJ1aWxkTGF5b3V0U2NvcGVzKGNoaWxkLCBhdENoYXJhY3Rlcik7Ci0KLSAgICAg
ICAgTGF5b3V0U2NvcGUgc2NvcGU7Ci0gICAgICAgIGJ1aWxkTGF5b3V0U2NvcGUoc2NvcGUsIGNo
aWxkLCB0ZXh0Q29udGVudFN0YXJ0LCBhdENoYXJhY3RlciAtIHRleHRDb250ZW50U3RhcnQpOwot
ICAgICAgICBtX3Njb3Blcy5hcHBlbmQoc2NvcGUpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGlu
ZSB2b2lkIGZpbGxEZXN0aW5hdGlvblZlY3RvcldpdGhMYXN0U291cmNlVmFsdWUoVmVjdG9yPGZs
b2F0PiYgZGVzdGluYXRpb24sIHVuc2lnbmVkIGRlc3RpbmF0aW9uU3RhcnRPZmZzZXQsIFZlY3Rv
cjxmbG9hdD4mIHNvdXJjZSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmIChzb3VyY2UuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCBsYXN0VmFsdWUgPSBzb3VyY2Uu
bGFzdCgpOwotCi0gICAgdW5zaWduZWQgcm90YXRlVmFsdWVzU2l6ZSA9IHNvdXJjZS5zaXplKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gcm90YXRlVmFsdWVzU2l6ZTsgaSA8IGxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIEFTU0VSVChpICsgZGVzdGluYXRpb25TdGFydE9mZnNldCA8IGRlc3RpbmF0
aW9uLnNpemUoKSk7Ci0gICAgICAgIGRlc3RpbmF0aW9uLmF0KGkgKyBkZXN0aW5hdGlvblN0YXJ0
T2Zmc2V0KSA9IGxhc3RWYWx1ZTsKLSAgICB9Ci19Ci0KLXZvaWQgU1ZHVGV4dExheW91dEJ1aWxk
ZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0Zyb21TY29wZXMoKQotewotICAgIEFTU0VSVCghbV9z
Y29wZXMuaXNFbXB0eSgpKTsKLQotICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoID0gbV9zY29wZXMu
Zmlyc3QoKS50ZXh0Q29udGVudExlbmd0aDsKLSAgICBpZiAoIXRvdGFsTGVuZ3RoKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2F0dHJpYnV0ZXMuZmlsbFdpdGhFbXB0eVZhbHVlcyh0b3RhbExl
bmd0aCk7Ci0KLSAgICAvLyBCdWlsZCBmaW5hbCBsaXN0IG9mIHgveS9keC9keS9yb3RhdGUgdmFs
dWVzIGZvciBlYWNoIGNoYXJhY3RlciBzdG9yZXMgaW4gdGhlIDx0ZXh0PiBzdWJ0cmVlLgotICAg
IGZvciAodW5zaWduZWQgYXRTY29wZSA9IDA7IGF0U2NvcGUgPCBtX3Njb3Blcy5zaXplKCk7ICsr
YXRTY29wZSkgewotICAgICAgICBMYXlvdXRTY29wZSYgc2NvcGUgPSBtX3Njb3Blcy5hdChhdFNj
b3BlKTsKLSAgICAgICAgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMgPSBzY29w
ZS5hdHRyaWJ1dGVzOwotCi0gICAgICAgIGNvcHlUb0Rlc3RpbmF0aW9uVmVjdG9yKG1fYXR0cmli
dXRlcy54VmFsdWVzKCksIHNjb3BlLnRleHRDb250ZW50U3RhcnQsIGF0dHJpYnV0ZXMueFZhbHVl
cygpLCAwLCBhdHRyaWJ1dGVzLnhWYWx1ZXMoKS5zaXplKCkpOwotICAgICAgICBjb3B5VG9EZXN0
aW5hdGlvblZlY3RvcihtX2F0dHJpYnV0ZXMueVZhbHVlcygpLCBzY29wZS50ZXh0Q29udGVudFN0
YXJ0LCBhdHRyaWJ1dGVzLnlWYWx1ZXMoKSwgMCwgYXR0cmlidXRlcy55VmFsdWVzKCkuc2l6ZSgp
KTsKLSAgICAgICAgY29weVRvRGVzdGluYXRpb25WZWN0b3IobV9hdHRyaWJ1dGVzLmR4VmFsdWVz
KCksIHNjb3BlLnRleHRDb250ZW50U3RhcnQsIGF0dHJpYnV0ZXMuZHhWYWx1ZXMoKSwgMCwgYXR0
cmlidXRlcy5keFZhbHVlcygpLnNpemUoKSk7Ci0gICAgICAgIGNvcHlUb0Rlc3RpbmF0aW9uVmVj
dG9yKG1fYXR0cmlidXRlcy5keVZhbHVlcygpLCBzY29wZS50ZXh0Q29udGVudFN0YXJ0LCBhdHRy
aWJ1dGVzLmR5VmFsdWVzKCksIDAsIGF0dHJpYnV0ZXMuZHlWYWx1ZXMoKS5zaXplKCkpOwotICAg
ICAgICBjb3B5VG9EZXN0aW5hdGlvblZlY3RvcihtX2F0dHJpYnV0ZXMucm90YXRlVmFsdWVzKCks
IHNjb3BlLnRleHRDb250ZW50U3RhcnQsIGF0dHJpYnV0ZXMucm90YXRlVmFsdWVzKCksIDAsIGF0
dHJpYnV0ZXMucm90YXRlVmFsdWVzKCkuc2l6ZSgpKTsKLQotICAgICAgICAvLyBJbiBob3Jpem9u
dGFsICh2ZXJ0aWNhbCkgd3JpdGluZyBtb2RlcywgdGhlIGxhc3QgeSAoeCkgdmFsdWUgaW4gdGhl
IHNjb3BlIGlzIHRoZSBkZWZhdWx0IHkgKHgpIHZhbHVlIGZvciBhbGwgZm9sbG93aW5nIGNoYXJh
Y3RlcnMsIHVubGVzcyBleHBsaWNpdGVseSBvdmVycmlkZW4uCi0gICAgICAgIGlmIChzY29wZS5p
c1ZlcnRpY2FsV3JpdGluZ01vZGUpCi0gICAgICAgICAgICBmaWxsRGVzdGluYXRpb25WZWN0b3JX
aXRoTGFzdFNvdXJjZVZhbHVlKG1fYXR0cmlidXRlcy54VmFsdWVzKCksIHNjb3BlLnRleHRDb250
ZW50U3RhcnQsIGF0dHJpYnV0ZXMueFZhbHVlcygpLCBzY29wZS50ZXh0Q29udGVudExlbmd0aCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGxEZXN0aW5hdGlvblZlY3RvcldpdGhMYXN0
U291cmNlVmFsdWUobV9hdHRyaWJ1dGVzLnlWYWx1ZXMoKSwgc2NvcGUudGV4dENvbnRlbnRTdGFy
dCwgYXR0cmlidXRlcy55VmFsdWVzKCksIHNjb3BlLnRleHRDb250ZW50TGVuZ3RoKTsKLQotICAg
ICAgICAvLyBUaGUgbGFzdCByb3RhdGlvbiB2YWx1ZSBpbiB0aGUgc2NvcGUgaXMgdGhlIGRlZmF1
bHQgcm90YXRpb24gZm9yIGFsbCBmb2xsb3dpbmcgY2hhcmFjdGVyLCB1bmxlc3MgZXhwbGljaXRl
bHkgb3ZlcnJpZGVuLgotICAgICAgICBmaWxsRGVzdGluYXRpb25WZWN0b3JXaXRoTGFzdFNvdXJj
ZVZhbHVlKG1fYXR0cmlidXRlcy5yb3RhdGVWYWx1ZXMoKSwgc2NvcGUudGV4dENvbnRlbnRTdGFy
dCwgYXR0cmlidXRlcy5yb3RhdGVWYWx1ZXMoKSwgc2NvcGUudGV4dENvbnRlbnRMZW5ndGgpOwot
ICAgIH0KLX0KLQotdm9pZCBTVkdUZXh0TGF5b3V0QnVpbGRlcjo6bWVhc3VyZUNoYXJhY3RlcnMo
UmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMmIGF0dHJp
YnV0ZXMpCi17Ci0gICAgQVNTRVJUKHRleHQpOwotICAgIEFTU0VSVCh0ZXh0LT5zdHlsZSgpKTsK
LSAgICBjb25zdCBGb250JiBmb250ID0gdGV4dC0+c3R5bGUoKS0+Zm9udCgpOwotICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGV4dC0+Y2hhcmFjdGVycygpOwotICAgIGludCBsZW5ndGgg
PSB0ZXh0LT50ZXh0TGVuZ3RoKCk7Ci0KLSAgICBUZXh0UnVuIHJ1bigwLCAwKTsKLSAgICBydW4u
ZGlzYWJsZVNwYWNpbmcoKTsKLSAgICBydW4uZGlzYWJsZVJvdW5kaW5nSGFja3MoKTsKLQotICAg
IGludCBjaGFyc0NvbnN1bWVkID0gMDsKLSAgICBmb3IgKGludCBwb3NpdGlvbiA9IDA7IHBvc2l0
aW9uIDwgbGVuZ3RoOyBwb3NpdGlvbiArPSBjaGFyc0NvbnN1bWVkKSB7Ci0gICAgICAgIHJ1bi5z
ZXRUZXh0KGNoYXJhY3RlcnMgKyBwb3NpdGlvbiwgMSk7Ci0gICAgICAgIGludCBleHRyYUNoYXJz
QXZhaWxhYmxlID0gbGVuZ3RoIC0gcG9zaXRpb24gLSAxOwotCi0gICAgICAgIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzOjpDaGFyYWN0ZXJEYXRhIGNoYXJhY3RlckRhdGE7Ci0gICAgICAgIGNoYXJh
Y3RlckRhdGEud2lkdGggPSBmb250LmZsb2F0V2lkdGgocnVuLCBleHRyYUNoYXJzQXZhaWxhYmxl
LCBjaGFyYWN0ZXJEYXRhLnNwYW5zQ2hhcmFjdGVycywgY2hhcmFjdGVyRGF0YS5nbHlwaE5hbWUp
OwotICAgICAgICBjaGFyYWN0ZXJEYXRhLmhlaWdodCA9IGZvbnQuaGVpZ2h0KCk7Ci0gICAgICAg
IGNoYXJhY3RlckRhdGEudW5pY29kZVN0cmluZyA9IFN0cmluZyhjaGFyYWN0ZXJzICsgcG9zaXRp
b24sIGNoYXJhY3RlckRhdGEuc3BhbnNDaGFyYWN0ZXJzKTsKLSAgICAgICAgYXR0cmlidXRlcy5j
aGFyYWN0ZXJEYXRhVmFsdWVzKCkuYXBwZW5kKGNoYXJhY3RlckRhdGEpOwotCi0gICAgICAgIGNo
YXJzQ29uc3VtZWQgPSBjaGFyYWN0ZXJEYXRhLnNwYW5zQ2hhcmFjdGVyczsKLSAgICB9Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBleHRyYWN0RmxvYXRWYWx1ZXNGcm9tU1ZHTGVuZ3RoTGlzdChT
VkdFbGVtZW50KiBsZW5ndGhDb250ZXh0LCBTVkdMZW5ndGhMaXN0KiBsaXN0LCBWZWN0b3I8Zmxv
YXQ+JiBmbG9hdFZhbHVlcywgaW50IHRleHRDb250ZW50TGVuZ3RoKQotewotICAgIEFTU0VSVChs
ZW5ndGhDb250ZXh0KTsKLSAgICBBU1NFUlQobGlzdCk7Ci0gICAgQVNTRVJUKHRleHRDb250ZW50
TGVuZ3RoID49IDApOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IGxlbmd0
aCA9IGxpc3QtPm51bWJlck9mSXRlbXMoKTsKLSAgICBpZiAobGVuZ3RoID4gdGV4dENvbnRlbnRM
ZW5ndGgpCi0gICAgICAgIGxlbmd0aCA9IHRleHRDb250ZW50TGVuZ3RoOwotCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBTVkdMZW5ndGggbGVuZ3RoKGxp
c3QtPmdldEl0ZW0oaSwgZWMpKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIGZsb2F0
VmFsdWVzLmFwcGVuZChsZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCkpOwotICAgIH0KLX0KLQot
c3RhdGljIGlubGluZSB2b2lkIGV4dHJhY3RGbG9hdFZhbHVlc0Zyb21TVkdOdW1iZXJMaXN0KFNW
R051bWJlckxpc3QqIGxpc3QsIFZlY3RvcjxmbG9hdD4mIGZsb2F0VmFsdWVzLCBpbnQgdGV4dENv
bnRlbnRMZW5ndGgpCi17Ci0gICAgQVNTRVJUKGxpc3QpOwotICAgIEFTU0VSVCh0ZXh0Q29udGVu
dExlbmd0aCA+PSAwKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGludCBsZW5n
dGggPSBsaXN0LT5udW1iZXJPZkl0ZW1zKCk7Ci0gICAgaWYgKGxlbmd0aCA+IHRleHRDb250ZW50
TGVuZ3RoKQotICAgICAgICBsZW5ndGggPSB0ZXh0Q29udGVudExlbmd0aDsKLQotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZmxvYXQgbGVuZ3RoKGxpc3Qt
PmdldEl0ZW0oaSwgZWMpKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIGZsb2F0VmFs
dWVzLmFwcGVuZChsZW5ndGgpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50KiBzdmdUZXh0UG9zaXRpb25pbmdFbGVtZW50Rm9ySW5saW5lUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLXsKLSAgICBBU1NFUlQocmVuZGVyZXIpOwotICAg
IEFTU0VSVChyZW5kZXJlci0+aXNTVkdUZXh0KCkgfHwgcmVuZGVyZXItPmlzU1ZHSW5saW5lKCkp
OwotCi0gICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7Ci0gICAgQVNTRVJUKG5vZGUp
OwotICAgIEFTU0VSVChub2RlLT5pc1NWR0VsZW1lbnQoKSk7Ci0KLSAgICBpZiAoIW5vZGUtPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6OnRleHRUYWcpCi0gICAgICYmICFub2RlLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjp0c3BhblRhZykKLSNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQotICAgICAmJiAhbm9kZS0+
aGFzVGFnTmFtZShTVkdOYW1lczo6YWx0R2x5cGhUYWcpCi0jZW5kaWYKLSAgICAgJiYgIW5vZGUt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Kj4obm9kZSk7Ci19
Ci0KLXZvaWQgU1ZHVGV4dExheW91dEJ1aWxkZXI6OmJ1aWxkTGF5b3V0U2NvcGUoTGF5b3V0U2Nv
cGUmIHNjb3BlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCB1bnNpZ25lZCB0ZXh0Q29udGVudFN0
YXJ0LCB1bnNpZ25lZCB0ZXh0Q29udGVudExlbmd0aCkKLXsKLSAgICBBU1NFUlQocmVuZGVyZXIp
OwotICAgIEFTU0VSVChyZW5kZXJlci0+c3R5bGUoKSk7Ci0KLSAgICBzY29wZS5pc1ZlcnRpY2Fs
V3JpdGluZ01vZGUgPSBpc1ZlcnRpY2FsV3JpdGluZ01vZGUocmVuZGVyZXItPnN0eWxlKCktPnN2
Z1N0eWxlKCkpOwotICAgIHNjb3BlLnRleHRDb250ZW50U3RhcnQgPSB0ZXh0Q29udGVudFN0YXJ0
OwotICAgIHNjb3BlLnRleHRDb250ZW50TGVuZ3RoID0gdGV4dENvbnRlbnRMZW5ndGg7Ci0KLSAg
ICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiBlbGVtZW50ID0gc3ZnVGV4dFBvc2l0aW9uaW5n
RWxlbWVudEZvcklubGluZVJlbmRlcmVyKHJlbmRlcmVyKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
ID0gc2NvcGUuYXR0cmlidXRlczsKLSAgICBleHRyYWN0RmxvYXRWYWx1ZXNGcm9tU1ZHTGVuZ3Ro
TGlzdChlbGVtZW50LCBlbGVtZW50LT54KCksIGF0dHJpYnV0ZXMueFZhbHVlcygpLCB0ZXh0Q29u
dGVudExlbmd0aCk7Ci0gICAgZXh0cmFjdEZsb2F0VmFsdWVzRnJvbVNWR0xlbmd0aExpc3QoZWxl
bWVudCwgZWxlbWVudC0+eSgpLCBhdHRyaWJ1dGVzLnlWYWx1ZXMoKSwgdGV4dENvbnRlbnRMZW5n
dGgpOwotICAgIGV4dHJhY3RGbG9hdFZhbHVlc0Zyb21TVkdMZW5ndGhMaXN0KGVsZW1lbnQsIGVs
ZW1lbnQtPmR4KCksIGF0dHJpYnV0ZXMuZHhWYWx1ZXMoKSwgdGV4dENvbnRlbnRMZW5ndGgpOwot
ICAgIGV4dHJhY3RGbG9hdFZhbHVlc0Zyb21TVkdMZW5ndGhMaXN0KGVsZW1lbnQsIGVsZW1lbnQt
PmR5KCksIGF0dHJpYnV0ZXMuZHlWYWx1ZXMoKSwgdGV4dENvbnRlbnRMZW5ndGgpOwotICAgIGV4
dHJhY3RGbG9hdFZhbHVlc0Zyb21TVkdOdW1iZXJMaXN0KGVsZW1lbnQtPnJvdGF0ZSgpLCBhdHRy
aWJ1dGVzLnJvdGF0ZVZhbHVlcygpLCB0ZXh0Q29udGVudExlbmd0aCk7Ci19Ci0KLX0KLQotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dExheW91dEJ1aWxkZXIuaAkocmV2aXNpb24gNjg4NjcpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFNWR1RleHRMYXlvdXRCdWlsZGVyX2gKLSNkZWZp
bmUgU1ZHVGV4dExheW91dEJ1aWxkZXJfaAotCi0jaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJT
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBSZW5kZXJTVkdJ
bmxpbmVUZXh0OwotY2xhc3MgUmVuZGVyU1ZHVGV4dDsKLQotY2xhc3MgU1ZHVGV4dExheW91dEJ1
aWxkZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewotcHVibGljOgotICAgIFNWR1RleHRMYXlvdXRC
dWlsZGVyKCk7Ci0gICAgdm9pZCBidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0U3VidHJlZShS
ZW5kZXJTVkdUZXh0Kik7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IExheW91dFNjb3BlIHsKLSAg
ICAgICAgTGF5b3V0U2NvcGUoKQotICAgICAgICAgICAgOiBpc1ZlcnRpY2FsV3JpdGluZ01vZGUo
ZmFsc2UpCi0gICAgICAgICAgICAsIHRleHRDb250ZW50U3RhcnQoMCkKLSAgICAgICAgICAgICwg
dGV4dENvbnRlbnRMZW5ndGgoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBpc1ZlcnRpY2FsV3JpdGluZ01vZGU7Ci0gICAgICAgIHVuc2lnbmVkIHRleHRDb250ZW50U3Rh
cnQ7Ci0gICAgICAgIHVuc2lnbmVkIHRleHRDb250ZW50TGVuZ3RoOwotICAgICAgICBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICAgIH07Ci0KLSAgICB2b2lkIGJ1aWxkTGF5
b3V0U2NvcGVzKFJlbmRlck9iamVjdCosIHVuc2lnbmVkJiBhdENoYXJhY3Rlcik7Ci0gICAgdm9p
ZCBidWlsZExheW91dFNjb3BlKExheW91dFNjb3BlJiwgUmVuZGVyT2JqZWN0KiwgdW5zaWduZWQg
dGV4dENvbnRlbnRTdGFydCwgdW5zaWduZWQgdGV4dENvbnRlbnRMZW5ndGgpOwotICAgIHZvaWQg
YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRnJvbVNjb3BlcygpOwotICAgIHZvaWQgcHJvcGFnYXRlTGF5
b3V0QXR0cmlidXRlcyhSZW5kZXJPYmplY3QqLCB1bnNpZ25lZCYgYXRDaGFyYWN0ZXIpOwotICAg
IHZvaWQgbWVhc3VyZUNoYXJhY3RlcnMoUmVuZGVyU1ZHSW5saW5lVGV4dCosIFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzJik7Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPExheW91dFNjb3BlPiBtX3Nj
b3BlczsKLSAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotI2VuZGlmCg==
</data>
<flag name="review"
          id="59145"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>