<?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>9488</bug_id>
          
          <creation_ts>2006-06-17 15:03:24 -0700</creation_ts>
          <short_desc>Animated GIFs do not respect transforms in SVG</short_desc>
          <delta_ts>2006-06-19 20:06:34 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>46110</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-06-17 15:03:24 -0700</bug_when>
    <thetext>Animated GIFs do not respect transforms in SVG

See example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46111</commentid>
    <comment_count>1</comment_count>
      <attachid>8890</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-06-17 15:03:54 -0700</bug_when>
    <thetext>Created attachment 8890
Test case (with remote images)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46151</commentid>
    <comment_count>2</comment_count>
      <attachid>8898</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-06-18 01:19:43 -0700</bug_when>
    <thetext>Created attachment 8898
patch that fixes handling of partial repaints in SVG - many things were busted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46196</commentid>
    <comment_count>3</comment_count>
      <attachid>8898</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-18 16:43:23 -0700</bug_when>
    <thetext>Comment on attachment 8898
patch that fixes handling of partial repaints in SVG - many things were busted

looks good; r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46217</commentid>
    <comment_count>4</comment_count>
      <attachid>8916</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-06-18 20:04:58 -0700</bug_when>
    <thetext>Created attachment 8916
better patch that fixes many more repaint issues.

This needs test cases landed with it. Maybe manual tests for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46240</commentid>
    <comment_count>5</comment_count>
      <attachid>8919</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-06-19 01:53:30 -0700</bug_when>
    <thetext>Created attachment 8919
even better patch (doesn&apos;t break opacity) plus some manual tests

This breaks the metrics (but not rendering) on some svg layout tests, probably should not be landed until I investigate that. But might be worth preliminary review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46245</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-06-19 02:42:21 -0700</bug_when>
    <thetext>On second thought... I think the metrics changes in the layout tests are all ok. They seem to more accurately represent the actual bounding boxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46332</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-19 20:06:34 -0700</bug_when>
    <thetext>Committed as revision r14918.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8890</attachid>
            <date>2006-06-17 15:03:54 -0700</date>
            <delta_ts>2006-06-17 15:03:54 -0700</delta_ts>
            <desc>Test case (with remote images)</desc>
            <filename>test.svg</filename>
            <type>image/svg+xml</type>
            <size>940</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgICAgeG1sbnM6eGxp
bms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgeG1sbnM6eGh0bWw9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgogICAgICAgIAogICAgICAgIDx0ZXh0IHg9IjAi
IHk9IjE1Ij5Gb3JlaWduT2JqZWN0OjwvdGV4dD4KICAgICAgICA8ZyB0cmFuc2Zvcm09InJvdGF0
ZSg0NSwxMDAsMjUwKSIgPgogICAgICAgICAgICA8cmVjdCBmaWxsPSJ5ZWxsb3ciIHN0cm9rZT0i
IzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiB4PSI2MCIgeT0iNjAiIHdpZHRoPSIxNzAiIGhlaWdo
dD0iMTcwIiAvPgogICAgICAgICAgICAgICAgPGZvcmVpZ25PYmplY3QgeD0iNzAiIHk9IjcwIiB3
aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgPgogICAgICAgICAgICAgICAgICAgICAgICA8eGh0bWw6
aW1nIHNyYz0iaHR0cDovL3d3dy5jaXRpbGluay5jb20vfmdyaXp6bHkvYW5pZ2lmcy8zZG9scGgu
Z2lmIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgLz4KICAgICAgICAgICAgICAgIDwvZm9yZWln
bk9iamVjdD4KICAgICAgICA8L2c+CiAgICAgICAgPHRleHQgeD0iMCIgeT0iNDAwIj5TVkcgTmF0
aXZlOjwvdGV4dD4KICAgICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCA0MDApIHJvdGF0
ZSg0NSwxMDAsMjUwKSIgPgogICAgICAgICAgICA8cmVjdCBmaWxsPSJ5ZWxsb3ciIHN0cm9rZT0i
IzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiB4PSI2MCIgeT0iNjAiIHdpZHRoPSIxNzAiIGhlaWdo
dD0iMTcwIiAvPgogICAgICAgICAgICA8aW1hZ2UgeGxpbms6aHJlZj0iaHR0cDovL3d3dy5jaXRp
bGluay5jb20vfmdyaXp6bHkvYW5pZ2lmcy8zZG9scGguZ2lmIiB3aWR0aD0iMTUwIiBoZWlnaHQ9
IjE1MCIgLz4KICAgICAgICA8L2c+Cjwvc3ZnPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8898</attachid>
            <date>2006-06-18 01:19:43 -0700</date>
            <delta_ts>2006-06-18 20:05:21 -0700</delta_ts>
            <desc>patch that fixes handling of partial repaints in SVG - many things were busted</desc>
            <filename>svg-animation-repaint.patch.txt</filename>
            <type>text/plain</type>
            <size>11426</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTAz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMDYtMDYt
MTggIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIC0gZml4ZWQgaHR0cDovL2J1
Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD05NDg4CisgICAgICAgICJBbmlt
YXRlZCBHSUZzIGRvIG5vdCByZXNwZWN0IHRyYW5zZm9ybXMgaW4gU1ZHIgorCisgICAgICAgICog
a2NhbnZhcy9LQ2FudmFzQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXND
b250YWluZXI6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KTogT3ZlcnJpZGUgYmFzZSBjbGFz
cywgYW5kIGFwcGx5CisgICAgICAgIGFwcHJvcHJpYXRlIHRyYW5zZm9ybXMsIHNvIGRhbWFnZSBy
ZWN0cyBpbiB0cmFuc2Zvcm1lZCBTVkcgY29udGVudCBnZXQgcHJvcGFnYXRlZCB1cCBwcm9wZXJs
eS4KKyAgICAgICAgKFdlYkNvcmU6OktDYW52YXNDb250YWluZXI6OmdldEFic29sdXRlUmVwYWlu
dFJlY3QpOiBub3RlIGEgRklYTUU7IHRoaXMgbWV0aG9kCisgICAgICAgIHNlZW1zIHdyb25nLgor
ICAgICAgICAqIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5oOiBQcm90b3R5cGUgbmV3IG1ldGhv
ZC4KKworICAgICAgICAqIGNzcy9zdmcuY3NzOiBEb24ndCBhcHBseSBvdmVyZmxvdzpoaWRkZW4g
dG8gZm9yZWlnbk9iamVjdCwgc2luY2UgdGhhdCBtYWtlcyBpdCBhIFJlbmRlckxheWVyCisgICAg
ICAgIHNvIGl0IHBhaW50cyB0d2ljZS4KKyAgICAgICAgKiBrY2FudmFzL1JlbmRlckZvcmVpZ25P
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQp
OiBUcmFuc2Zvcm0gdGhlIGRhbWFnZSByZWN0IGJlZm9yZSBwYXNzaW5nIGl0IGRvd24gdG8gSFRN
TCBjb250ZW50LAorICAgICAgICBzbyBldmVyeXRoaW5nIHBhaW50cyB0aGF0IGlzIHN1cHBvc2Vk
IHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUFic29s
dXRlUmVwYWludFJlY3QpOiBPdmVycmlkZSBiYXNlIGNsYXNzLCBhbmQgYXBwbHkKKyAgICAgICAg
YXBwcm9wcmlhdGUgdHJhbnNmb3Jtcywgc28gZGFtYWdlIHJlY3RzIGluIEhUTUwgZW1iZWRkZWQg
aW4gU1ZHIGdldCBwcm9wYWdhdGVkIHVwIHByb3Blcmx5LgorCisgICAgICAgICoga2NhbnZhcy9S
ZW5kZXJGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgICoga2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3Qp
OiBPdmVycmlkZSBiYXNlIGNsYXNzLCBhbmQgYXBwbHkKKyAgICAgICAgYXBwcm9wcmlhdGUgdHJh
bnNmb3Jtcywgc28gZGFtYWdlIHJlY3RzIGluIFNWRyBpbWFnZXMgIGdldCBwcm9wYWdhdGVkIHVw
IHByb3Blcmx5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0aW9u
Rm9yQXR0cmlidXRlcyk6IE5ldyBoZWxwZXIgbWV0aG9kLCBmYWN0b3JlZCBvdXQgb2YgYmVsb3cu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6dHJhbnNsYXRlRm9yQXR0cmlidXRl
cyk6IFVzZSBhYm92ZS4KKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmg6CisgICAg
ICAgICoga2NhbnZhcy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1RleHQ6OnBhaW50KTogVHJhbnNmb3JtIGluY29taW5nIGRhbWFnZSByZWN0LgorICAgICAg
ICAqIHBsYXRmb3JtL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyk6IEluc3RlYWQgb2YgdHJhbnNm
b3JtaW5nIHJlY3QgdG8gZGV2aWNlIHNwYWNlCisgICAgICAgIGFuZCBiYWNrIHRvIHVzZXIgc3Bh
Y2UsIGRvIHRoaXMgZm9yIHRoZSBvcmlnaW4gYW5kIGxvd2VyIHJpZ2h0IGNvcm5lciBvZiB0aGUg
cmVjdC4gT3RoZXJ3aXNlIHRoZQorICAgICAgICByZWN0IHdpbGwgZ2V0IGluZmxhdGVkIGlmIHVz
ZXIgc3BhY2UgaXMgcm90YXRlZCBvciBza2V3ZWQuCisKIDIwMDYtMDYtMTcgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBueXBvcC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgZ2dhcmVuLgpJ
bmRleDogY3NzL3N2Zy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL3N2Zy5jc3MJKHJldmlzaW9uIDE0
ODk1KQorKysgY3NzL3N2Zy5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgc3Zn
IHsKICAgICBoZWlnaHQ6IDEwMCU7CiB9CiAKLXN2Zywgc3ltYm9sLCBtYXJrZXIsIHBhdHRlcm4s
IGZvcmVpZ25PYmplY3Qgeworc3ZnLCBzeW1ib2wsIG1hcmtlciwgcGF0dGVybiB7CiAgICAgb3Zl
cmZsb3c6IGhpZGRlbgogfQogCkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE0ODk1
KQorKysga2NhbnZhcy9LQ2FudmFzQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUy
LDkgKzI1MiwyMSBAQCBJbnRSZWN0IEtDYW52YXNDb250YWluZXI6OmdldEFic29sdXRlUmVwCiAg
ICAgaWYgKGZpbHRlcikKICAgICAgICAgcmVwYWludFJlY3QudW5pdGUoZW5jbG9zaW5nSW50UmVj
dChmaWx0ZXItPmZpbHRlckJCb3hGb3JJdGVtQkJveChyZXBhaW50UmVjdCkpKTsKIAorICAgIC8v
IEZJWE1FOiB3aGF0IGFib3V0IHRyYW5zZm9ybT8KKwogICAgIHJldHVybiByZXBhaW50UmVjdDsK
IH0KIAordm9pZCBLQ2FudmFzQ29udGFpbmVyOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJ
bnRSZWN0JiByLCBib29sIGYpCit7CisgICAgUU1hdHJpeCB0cmFuc2Zvcm0gPSB2aWV3cG9ydFRy
YW5zZm9ybSgpICogbG9jYWxUcmFuc2Zvcm0oKTsKKyAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qo
cik7CisgICAgCisgICAgLy8gRklYTUU6IGNvbnNpZGVyIGZpbHRlcgorCisgICAgUmVuZGVyQ29u
dGFpbmVyOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyLCBmKTsKK30KKwogUU1hdHJpeCBL
Q2FudmFzQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHZpZXdwb3J0VHJhbnNmb3JtKCkgKiBSZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3Jt
KCk7CkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2Fu
dmFzL0tDYW52YXNDb250YWluZXIuaAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2FudmFzL0tDYW52
YXNDb250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyAmcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwg
aW50IHBhcmVudFkpOwogICAgIAogICAgIHZpcnR1YWwgSW50UmVjdCBnZXRBYnNvbHV0ZVJlcGFp
bnRSZWN0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUFic29sdXRlUmVwYWludFJlY3Qo
SW50UmVjdCYgciwgYm9vbCBmKTsKKwogICAgIHZpcnR1YWwgUU1hdHJpeCBhYnNvbHV0ZVRyYW5z
Zm9ybSgpIGNvbnN0OwogCiAgICAgYm9vbCBmaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYp
IGNvbnN0OwpJbmRleDoga2NhbnZhcy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCShyZXZpc2lvbiAxNDg5NSkKKysr
IGtjYW52YXMvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDIw
ICs1NiwzNCBAQCB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mCiAgICAg
ICAgIGNvbnRleHQgPSBwYWludEluZm8ucC0+Y3JlYXRlUmVuZGVyaW5nRGV2aWNlQ29udGV4dCgp
OwogICAgICAgICBkZXZpY2UtPnB1c2hDb250ZXh0KGNvbnRleHQpOwogICAgICAgICBzaG91bGRQ
b3BDb250ZXh0ID0gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgcGFpbnRJbmZvLnAtPnNhdmUo
KTsKKyAgICB9CisKKyAgICBwYWludEluZm8ucC0+c2F2ZSgpOwogCiAgICAgY29udGV4dC0+Y29u
Y2F0Q1RNKFFNYXRyaXgoKS50cmFuc2xhdGUocGFyZW50WCwgcGFyZW50WSkpOwogICAgIGNvbnRl
eHQtPmNvbmNhdENUTShsb2NhbFRyYW5zZm9ybSgpKTsKICAgICBjb250ZXh0LT5jb25jYXRDVE0o
dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkpOwotICAgIAotICAgIFJlbmRlckJsb2NrOjpwYWlu
dChwYWludEluZm8sIDAsIDApOworCisgICAgcGFpbnRJbmZvLnAtPmFkZENsaXAoZ2V0Q2xpcFJl
Y3QocGFyZW50WCwgcGFyZW50WSkpOworCisgICAgUGFpbnRJbmZvIHBpKHBhaW50SW5mbyk7Cisg
ICAgcGkuciA9IGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJ0KCkubWFwUmVjdChwYWludEluZm8u
cik7CisgICAgUmVuZGVyQmxvY2s6OnBhaW50KHBpLCAwLCAwKTsKIAogICAgIGlmIChzaG91bGRQ
b3BDb250ZXh0KSB7CiAgICAgICAgIGRldmljZS0+cG9wQ29udGV4dCgpOwogICAgICAgICBkZWxl
dGUgY29udGV4dDsKLSAgICB9IGVsc2UKLSAgICAgICAgcGFpbnRJbmZvLnAtPnJlc3RvcmUoKTsK
KyAgICB9CisKKyAgICBwYWludEluZm8ucC0+cmVzdG9yZSgpOworfQorCit2b2lkIFJlbmRlckZv
cmVpZ25PYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wg
ZikKK3sKKyAgICBRTWF0cml4IHRyYW5zZm9ybSA9IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygp
ICogbG9jYWxUcmFuc2Zvcm0oKTsKKyAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qocik7CisgICAg
CisgICAgUmVuZGVyQmxvY2s6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOwogfQog
CiBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBp
bnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24p
CkluZGV4OiBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2Fu
dmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2FudmFzL1Jl
bmRlckZvcmVpZ25PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBRTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxUcmFuc2Zvcm0oY29uc3Qg
UU1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyB9CiAgICAgCisg
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJv
b2wgZik7CisKICAgICBib29sIG5vZGVBdFBvaW50KE5vZGVJbmZvJiwgaW50IHgsIGludCB5LCBp
bnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CiAKICBwcml2YXRlOgpJbmRleDoga2NhbnZh
cy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9SZW5kZXJTVkdJbWFn
ZS5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsMTAgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFp
bnQoUGFpbnRJbmZvJiBwYQogICAgICAgICBmaWx0ZXItPnByZXBhcmVGaWx0ZXIoYm91bmRpbmdC
b3gpOwogICAgIAogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGMoZGV2aWNlLT5jdXJyZW50
Q29udGV4dCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7Ci0gICAgUGFpbnRJbmZvIHBpID0g
cGFpbnRJbmZvOworCisgICAgUGFpbnRJbmZvIHBpKHBhaW50SW5mbyk7CiAgICAgcGkucCA9IGMu
Z2V0KCk7CisgICAgcGkuciA9IGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJ0KCkubWFwUmVjdChw
YWludEluZm8ucik7CiAKICAgICBpbnQgeCA9IDAsIHkgPSAwOwogICAgIGlmICghc2hvdWxkUGFp
bnQocGksIHgsIHkpKQpAQCAtMTg4LDYgKzE5MCwxNCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpw
YWludChQYWludEluZm8mIHBhCiAgICAgfQogfQogCit2b2lkIFJlbmRlclNWR0ltYWdlOjpjb21w
dXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpCit7CisgICAgUU1hdHJp
eCB0cmFuc2Zvcm0gPSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKSAqIGxvY2FsVHJhbnNmb3Jt
KCk7CisgICAgciA9IHRyYW5zZm9ybS5tYXBSZWN0KHIpOworICAgIAorICAgIFJlbmRlckltYWdl
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyLCBmKTsKK30KKwogRmxvYXRSZWN0IFJlbmRl
clNWR0ltYWdlOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlKSBjb25zdAogewogICAg
IHJldHVybiBGbG9hdFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpOwpAQCAtMjIwLDEzICsy
MzAsMTkgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWJzb2x1dGVSZWN0cyhEZXByZQogICAgIHJl
Y3RzLmFwcGVuZChnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkpOwogfQogCi12b2lkIFJlbmRlclNW
R0ltYWdlOjp0cmFuc2xhdGVGb3JBdHRyaWJ1dGVzKCkKKworUU1hdHJpeCBSZW5kZXJTVkdJbWFn
ZTo6dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkKIHsKLSAgICBLUmVuZGVyaW5nRGV2aWNlQ29u
dGV4dCAqY29udGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29udGV4dCgpOwogICAg
IFNWR0ltYWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQgKj4o
bm9kZSgpKTsKICAgICBmbG9hdCB4T2Zmc2V0ID0gaW1hZ2UtPngoKS0+YmFzZVZhbCgpID8gaW1h
Z2UtPngoKS0+YmFzZVZhbCgpLT52YWx1ZSgpIDogMDsKICAgICBmbG9hdCB5T2Zmc2V0ID0gaW1h
Z2UtPnkoKS0+YmFzZVZhbCgpID8gaW1hZ2UtPnkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpIDogMDsK
LSAgICBjb250ZXh0LT5jb25jYXRDVE0oUU1hdHJpeCgpLnRyYW5zbGF0ZSh4T2Zmc2V0LCB5T2Zm
c2V0KSk7CisgICAgcmV0dXJuIFFNYXRyaXgoKS50cmFuc2xhdGUoeE9mZnNldCwgeU9mZnNldCk7
Cit9CisKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0ZUZvckF0dHJpYnV0ZXMoKQorewor
ICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gcmVuZGVyaW5nRGV2aWNlKCkt
PmN1cnJlbnRDb250ZXh0KCk7CisgICAgY29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zbGF0aW9uRm9y
QXR0cmlidXRlcygpKTsKIH0KIAogfQpJbmRleDoga2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuaAkocmV2aXNpb24gMTQ4OTUpCisr
KyBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
Q2FjaGVkSW1hZ2UqKTsKICAgICAgICAgdm9pZCBhZGp1c3RSZWN0c0ZvckFzcGVjdFJhdGlvKEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0UmVjdCYgc3JjUmVjdCwgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbyAqYXNwZWN0UmF0aW8pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZik7CisK
ICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHRyYW5zbGF0ZUZvckF0dHJpYnV0ZXMoKTsKKyAg
ICAgICAgUU1hdHJpeCB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsKICAgICAgICAgUU1hdHJp
eCBtX3RyYW5zZm9ybTsKICAgICB9OwogfQpJbmRleDoga2NhbnZhcy9SZW5kZXJTVkdUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrY2FudmFzL1JlbmRlclNWR1RleHQuY3BwCShyZXZpc2lvbiAxNDg5
NSkKKysrIGtjYW52YXMvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYg
Kzk0LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaQogICAgIE93
blB0cjxHcmFwaGljc0NvbnRleHQ+IGMoZGV2aWNlLT5jdXJyZW50Q29udGV4dCgpLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKSk7CiAgICAgUGFpbnRJbmZvIHBpID0gcGFpbnRJbmZvOwogICAgIHBp
LnAgPSBjLmdldCgpOworICAgIHBpLnIgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVydCgpLm1h
cFJlY3QocGFpbnRJbmZvLnIpOwogCiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpmaWxsUGFp
bnRTZXJ2ZXIgPSBLU1ZHUGFpbnRlckZhY3Rvcnk6OmZpbGxQYWludFNlcnZlcihzdHlsZSgpLCB0
aGlzKTsKICAgICBpZiAoZmlsbFBhaW50U2VydmVyKSB7CkluZGV4OiBwbGF0Zm9ybS9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCShyZXZpc2lvbiAxNDg5NSkKKysrIHBsYXRmb3JtL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM2LDE5ICs2MzYsMjcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnRyYW5zbGF0ZShjb25zdCBGbAogCiBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0
Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBDR1Jl
Y3QgZGV2aWNlUmVjdCA9IENHQ29udGV4dENvbnZlcnRSZWN0VG9EZXZpY2VTcGFjZShwbGF0Zm9y
bUNvbnRleHQoKSwgcmVjdCk7Ci0gICAgZGV2aWNlUmVjdC5vcmlnaW4ueCA9IHJvdW5kZihkZXZp
Y2VSZWN0Lm9yaWdpbi54KTsKLSAgICBkZXZpY2VSZWN0Lm9yaWdpbi55ID0gcm91bmRmKGRldmlj
ZVJlY3Qub3JpZ2luLnkpOwotICAgIGRldmljZVJlY3Quc2l6ZS53aWR0aCA9IHJvdW5kZihkZXZp
Y2VSZWN0LnNpemUud2lkdGgpOwotICAgIGRldmljZVJlY3Quc2l6ZS5oZWlnaHQgPSByb3VuZGYo
ZGV2aWNlUmVjdC5zaXplLmhlaWdodCk7CisgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gc2VwYXJh
dGVseSB0cmFuc2Zvcm0gdGhlIHR3byBjb3JuZXJzLCBhcyB0cmFuc2Zvcm1pbmcgdGhlIHdob2xl
IHJlY3QKKyAgICAvLyB3aWxsIGdyYWIgYm91bmRpbmcgYm94ZXMsIGFuZCBzbyB3aWxsIGVubGFy
Z2UgdGhlIHJlY3Qgd2hlbiB0aGVyZSBpcyBhbnkgcm90YXRpb24gb3Igc2tldworICAgIC8vIGlu
IHRoZSBjdXJyZW50IHRyYW5zZm9ybQorICAgIENHUG9pbnQgZGV2aWNlT3JpZ2luID0gQ0dDb250
ZXh0Q29udmVydFBvaW50VG9EZXZpY2VTcGFjZShwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdC5sb2Nh
dGlvbigpKTsKKyAgICBDR1BvaW50IGRldmljZUxvd2VyUmlnaHQgPSBDR0NvbnRleHRDb252ZXJ0
UG9pbnRUb0RldmljZVNwYWNlKHBsYXRmb3JtQ29udGV4dCgpLCByZWN0LmxvY2F0aW9uKCkgKyBy
ZWN0LnNpemUoKSk7CisKKyAgICBkZXZpY2VPcmlnaW4ueCA9IHJvdW5kZihkZXZpY2VPcmlnaW4u
eCk7CisgICAgZGV2aWNlT3JpZ2luLnkgPSByb3VuZGYoZGV2aWNlT3JpZ2luLnkpOworICAgIGRl
dmljZUxvd2VyUmlnaHQueCA9IHJvdW5kZihkZXZpY2VMb3dlclJpZ2h0LngpOworICAgIGRldmlj
ZUxvd2VyUmlnaHQueSA9IHJvdW5kZihkZXZpY2VMb3dlclJpZ2h0LnkpOwogICAgIAogICAgIC8v
IERvbid0IGxldCB0aGUgaGVpZ2h0IG9yIHdpZHRoIHJvdW5kIHRvIDAgdW5sZXNzIGVpdGhlciB3
YXMgb3JpZ2luYWxseSAwCi0gICAgaWYgKGRldmljZVJlY3Quc2l6ZS5oZWlnaHQgPT0gMCAmJiBy
ZWN0LmhlaWdodCgpICE9IDApCi0gICAgICAgIGRldmljZVJlY3Quc2l6ZS5oZWlnaHQgPSAxOwot
ICAgIGlmIChkZXZpY2VSZWN0LnNpemUud2lkdGggPT0gMCAmJiByZWN0LndpZHRoKCkgIT0gMCkK
LSAgICAgICAgZGV2aWNlUmVjdC5zaXplLndpZHRoID0gMTsKKyAgICBpZiAoZGV2aWNlT3JpZ2lu
LnkgPT0gZGV2aWNlTG93ZXJSaWdodC55ICYmIHJlY3QuaGVpZ2h0KCkgIT0gMCkKKyAgICAgICAg
ZGV2aWNlTG93ZXJSaWdodC55ICs9IDE7CisgICAgaWYgKGRldmljZU9yaWdpbi54ID09IGRldmlj
ZUxvd2VyUmlnaHQueCAmJiByZWN0LndpZHRoKCkgIT0gMCkKKyAgICAgICAgZGV2aWNlTG93ZXJS
aWdodC54ICs9IDE7CiAgICAgCi0gICAgcmV0dXJuIENHQ29udGV4dENvbnZlcnRSZWN0VG9Vc2Vy
U3BhY2UocGxhdGZvcm1Db250ZXh0KCksIGRldmljZVJlY3QpOworICAgIEZsb2F0UG9pbnQgcm91
bmRlZE9yaWdpbiA9IENHQ29udGV4dENvbnZlcnRQb2ludFRvVXNlclNwYWNlKHBsYXRmb3JtQ29u
dGV4dCgpLCBkZXZpY2VPcmlnaW4pOworICAgIEZsb2F0UG9pbnQgcm91bmRlZExvd2VyUmlnaHQg
PSBDR0NvbnRleHRDb252ZXJ0UG9pbnRUb1VzZXJTcGFjZShwbGF0Zm9ybUNvbnRleHQoKSwgZGV2
aWNlTG93ZXJSaWdodCk7CisKKyAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJv
dW5kZWRMb3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBpbnQgeU9mZnNldCwg
aW50IHdpZHRoLCBib29sIHByaW50aW5nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8916</attachid>
            <date>2006-06-18 20:04:58 -0700</date>
            <delta_ts>2006-06-19 01:53:30 -0700</delta_ts>
            <desc>better patch that fixes many more repaint issues.</desc>
            <filename>svg-animation-repaint.patch.txt</filename>
            <type>text/plain</type>
            <size>20000</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTA5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjEgQEAKKzIwMDYtMDYt
MTggIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZpeGVkIGh0dHA6Ly9idWd6aWxsYS5v
cGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4OAorICAgICAgICAiQW5pbWF0ZWQgR0lG
cyBkbyBub3QgcmVzcGVjdCB0cmFuc2Zvcm1zIGluIFNWRyIKKworICAgICAgICAqIGtjYW52YXMv
S0NhbnZhc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzQ29udGFpbmVy
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdCk6IE92ZXJyaWRlIGJhc2UgY2xhc3MsIGFuZCBh
cHBseQorICAgICAgICBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1zLCBzbyBkYW1hZ2UgcmVjdHMgaW4g
dHJhbnNmb3JtZWQgU1ZHIGNvbnRlbnQgZ2V0IHByb3BhZ2F0ZWQgdXAgcHJvcGVybHkuCisgICAg
ICAgIChXZWJDb3JlOjpLQ2FudmFzQ29udGFpbmVyOjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KTog
bm90ZSBhIEZJWE1FOyB0aGlzIG1ldGhvZAorICAgICAgICBzZWVtcyB3cm9uZy4KKyAgICAgICAg
KiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuaDogUHJvdG90eXBlIG5ldyBtZXRob2QuCisKKyAg
ICAgICAgKiBjc3Mvc3ZnLmNzczogRG9uJ3QgYXBwbHkgb3ZlcmZsb3c6aGlkZGVuIHRvIGZvcmVp
Z25PYmplY3QsIHNpbmNlIHRoYXQgbWFrZXMgaXQgYSBSZW5kZXJMYXllcgorICAgICAgICBzbyBp
dCBwYWludHMgdHdpY2UuCisgICAgICAgICoga2NhbnZhcy9SZW5kZXJGb3JlaWduT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KTogVHJhbnNm
b3JtIHRoZSBkYW1hZ2UgcmVjdCBiZWZvcmUgcGFzc2luZyBpdCBkb3duIHRvIEhUTUwgY29udGVu
dCwKKyAgICAgICAgc28gZXZlcnl0aGluZyBwYWludHMgdGhhdCBpcyBzdXBwb3NlZCB0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJlcGFp
bnRSZWN0KTogT3ZlcnJpZGUgYmFzZSBjbGFzcywgYW5kIGFwcGx5CisgICAgICAgIGFwcHJvcHJp
YXRlIHRyYW5zZm9ybXMsIHNvIGRhbWFnZSByZWN0cyBpbiBIVE1MIGVtYmVkZGVkIGluIFNWRyBn
ZXQgcHJvcGFnYXRlZCB1cCBwcm9wZXJseS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVp
Z25PYmplY3Q6OnJlcXVpcmVzTGF5ZXIpOiBOZXZlciB1c2UgYSBSZW5kZXJMYXllci4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OmxheW91dCk6IE1ha2Ugc3VyZSB0byBk
aXJ0eSBvdXIgcHJldmlvdXMgYm91bmRzIHdoZW4gbGF5b3V0CisgICAgICAgIGNoYW5nZXMsIGFz
IGJ5IHRyYW5zZm9ybS4KKyAgICAgICAgKiBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaDoK
KworICAgICAgICAqIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KTogVHJhbnNmb3JtIHRoZSBkYW1hZ2UgcmVjdCB3aGVu
IHBhaW50aW5nLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0
ZUFic29sdXRlUmVwYWludFJlY3QpOiBPdmVycmlkZSBiYXNlIGNsYXNzLCBhbmQgYXBwbHkKKyAg
ICAgICAgYXBwcm9wcmlhdGUgdHJhbnNmb3Jtcywgc28gZGFtYWdlIHJlY3RzIGluIFNWRyBpbWFn
ZXMgIGdldCBwcm9wYWdhdGVkIHVwIHByb3Blcmx5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcyk6IE5ldyBoZWxwZXIgbWV0aG9kLCBm
YWN0b3JlZCBvdXQgb2YgYmVsb3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6
dHJhbnNsYXRlRm9yQXR0cmlidXRlcyk6IFVzZSBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ltYWdlOjpyZXF1aXJlc0xheWVyKTogTmV2ZXIgdXNlIGEgUmVuZGVyTGF5ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KTogTWFrZSBzdXJlIHRvIHBy
b3Blcmx5IGRpcnR5IHRoZSBvbGQgYm91bmRzLCBhY2NvdW50aW5nCisgICAgICAgIGZvciB0cmFu
c2Zvcm1zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnJlbGF0aXZlQkJveCk6
IENvcnJlY3QgYmJveCBjb21wdXRhdGlvbi4KKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR0lt
YWdlLmg6CisKKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cGFpbnQpOiBUcmFuc2Zvcm0gaW5jb21pbmcgZGFtYWdl
IHJlY3QuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlQWJzb2x1dGVS
ZXBhaW50UmVjdCk6IEFwcGx5IHRyYW5zZm9ybXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdUZXh0OjpyZXF1aXJlc0xheWVyKTogTmV2ZXIgdXNlIGEgUmVuZGVyTGF5ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpsYXlvdXQpOiBNYWtlIHN1cmUgdG8gZGlydHkgdGhl
IG9sZCBib3VuZHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhl
bHMpOiBJbnN0ZWFkIG9mIHRyYW5zZm9ybWluZyByZWN0IHRvIGRldmljZSBzcGFjZQorICAgICAg
ICBhbmQgYmFjayB0byB1c2VyIHNwYWNlLCBkbyB0aGlzIGZvciB0aGUgb3JpZ2luIGFuZCBsb3dl
ciByaWdodCBjb3JuZXIgb2YgdGhlIHJlY3QuIE90aGVyd2lzZSB0aGUKKyAgICAgICAgcmVjdCB3
aWxsIGdldCBpbmZsYXRlZCBpZiB1c2VyIHNwYWNlIGlzIHJvdGF0ZWQgb3Igc2tld2VkLgorCisg
ICAgICAgICoga2NhbnZhcy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clBhdGg6OmxheW91dCk6IE1ha2Ugc3VyZSB0byBkaXJ0eSB0aGUgb2xkIGJvdW5kcy4KKworICAg
ICAgICBCb251cyBmaXg6CisgICAgICAgIAorICAgICAgICAqIGtjYW52YXMvUmVuZGVyU1ZHSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdFBvaW50KTog
Rml4IGhpdCB0ZXN0aW5nLiBXYXNuJ3QgYXBwbHlpbmcgdGhlIHgveQorICAgICAgICBhdHRyaWJ1
dGUgdHJhbnNmb3JtLgorCiAyMDA2LTA2LTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBraWx6
ZXIubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IGRhcmluLgpJbmRleDogY3NzL3N2Zy5jc3MK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gY3NzL3N2Zy5jc3MJKHJldmlzaW9uIDE0ODk1KQorKysgY3NzL3N2Zy5j
c3MJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgc3ZnIHsKICAgICBoZWlnaHQ6IDEw
MCU7CiB9CiAKLXN2Zywgc3ltYm9sLCBtYXJrZXIsIHBhdHRlcm4sIGZvcmVpZ25PYmplY3Qgewor
c3ZnLCBzeW1ib2wsIG1hcmtlciwgcGF0dGVybiB7CiAgICAgb3ZlcmZsb3c6IGhpZGRlbgogfQog
CkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9LQ2Fu
dmFzQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIktDYW52YXNDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBGbG9hdFJlY3Qgdmlld3BvcnQ7CiAgICAgRmxvYXRSZWN0IHZpZXdCb3g7
CiAgICAgS0NBbGlnbiBhbGlnbjsKKyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRzOwogfTsKIAog
S0NhbnZhc0NvbnRhaW5lcjo6S0NhbnZhc0NvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50ICpub2Rl
KQpAQCAtMTEwLDEzICsxMTIsMTUgQEAgdm9pZCBLQ2FudmFzQ29udGFpbmVyOjpsYXlvdXQoKQog
CiAgICAgSW50UmVjdCBvbGRCb3VuZHM7CiAgICAgYm9vbCBjaGVja0ZvclJlcGFpbnQgPSBjaGVj
a0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKLSAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQotICAg
ICAgICBvbGRCb3VuZHMgPSBnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCk7CisgICAgaWYgKHNlbGZO
ZWVkc0xheW91dCgpICYmIGNoZWNrRm9yUmVwYWludCkKKyAgICAgICAgb2xkQm91bmRzID0gZC0+
YWJzb2x1dGVCb3VuZHM7CiAKICAgICBjYWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7CiAK
LSAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQorICAgIGQtPmFic29sdXRlQm91bmRzID0gZ2V0QWJz
b2x1dGVSZXBhaW50UmVjdCgpOworCisgICAgaWYgKHNlbGZOZWVkc0xheW91dCgpICYmIGNoZWNr
Rm9yUmVwYWludCkKICAgICAgICAgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQob2xkQm91bmRz
LCBvbGRCb3VuZHMpOwogICAgICAgICAKICAgICBSZW5kZXJDb250YWluZXI6OmxheW91dCgpOwpA
QCAtMjUyLDkgKzI1NiwyMSBAQCBJbnRSZWN0IEtDYW52YXNDb250YWluZXI6OmdldEFic29sdXRl
UmVwCiAgICAgaWYgKGZpbHRlcikKICAgICAgICAgcmVwYWludFJlY3QudW5pdGUoZW5jbG9zaW5n
SW50UmVjdChmaWx0ZXItPmZpbHRlckJCb3hGb3JJdGVtQkJveChyZXBhaW50UmVjdCkpKTsKIAor
ICAgIC8vIEZJWE1FOiB3aGF0IGFib3V0IHRyYW5zZm9ybT8KKwogICAgIHJldHVybiByZXBhaW50
UmVjdDsKIH0KIAordm9pZCBLQ2FudmFzQ29udGFpbmVyOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50
UmVjdChJbnRSZWN0JiByLCBib29sIGYpCit7CisgICAgUU1hdHJpeCB0cmFuc2Zvcm0gPSBsb2Nh
bFRyYW5zZm9ybSgpOworICAgIHIgPSB0cmFuc2Zvcm0ubWFwUmVjdChyKTsKKyAgICAKKyAgICAv
LyBGSVhNRTogY29uc2lkZXIgZmlsdGVyCisKKyAgICBSZW5kZXJDb250YWluZXI6OmNvbXB1dGVB
YnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOworfQorCiBRTWF0cml4IEtDYW52YXNDb250YWluZXI6
OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4gdmlld3BvcnRUcmFuc2Zv
cm0oKSAqIFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKSW5kZXg6IGtjYW52
YXMvS0NhbnZhc0NvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc0NvbnRh
aW5lci5oCShyZXZpc2lvbiAxNDg5NSkKKysrIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvICZwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAg
ICAgCiAgICAgdmlydHVhbCBJbnRSZWN0IGdldEFic29sdXRlUmVwYWludFJlY3QoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29s
IGYpOworCiAgICAgdmlydHVhbCBRTWF0cml4IGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3Q7CiAK
ICAgICBib29sIGZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CkluZGV4OiBr
Y2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9SZW5kZXJG
b3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjAgKzU2LDU5IEBAIHZvaWQg
UmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmYKICAgICAgICAgY29udGV4dCA9IHBh
aW50SW5mby5wLT5jcmVhdGVSZW5kZXJpbmdEZXZpY2VDb250ZXh0KCk7CiAgICAgICAgIGRldmlj
ZS0+cHVzaENvbnRleHQoY29udGV4dCk7CiAgICAgICAgIHNob3VsZFBvcENvbnRleHQgPSB0cnVl
OwotICAgIH0gZWxzZQotICAgICAgICBwYWludEluZm8ucC0+c2F2ZSgpOworICAgIH0KKworICAg
IHBhaW50SW5mby5wLT5zYXZlKCk7CiAKICAgICBjb250ZXh0LT5jb25jYXRDVE0oUU1hdHJpeCgp
LnRyYW5zbGF0ZShwYXJlbnRYLCBwYXJlbnRZKSk7CiAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGxv
Y2FsVHJhbnNmb3JtKCkpOwogICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFuc2xhdGlvbkZvckF0
dHJpYnV0ZXMoKSk7Ci0gICAgCi0gICAgUmVuZGVyQmxvY2s6OnBhaW50KHBhaW50SW5mbywgMCwg
MCk7CisKKyAgICBwYWludEluZm8ucC0+YWRkQ2xpcChnZXRDbGlwUmVjdChwYXJlbnRYLCBwYXJl
bnRZKSk7CisKKyAgICBQYWludEluZm8gcGkocGFpbnRJbmZvKTsKKyAgICBwaS5yID0gYWJzb2x1
dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5tYXBSZWN0KHBhaW50SW5mby5yKTsKKyAgICBSZW5kZXJC
bG9jazo6cGFpbnQocGksIDAsIDApOwogCiAgICAgaWYgKHNob3VsZFBvcENvbnRleHQpIHsKICAg
ICAgICAgZGV2aWNlLT5wb3BDb250ZXh0KCk7CiAgICAgICAgIGRlbGV0ZSBjb250ZXh0OwotICAg
IH0gZWxzZQotICAgICAgICBwYWludEluZm8ucC0+cmVzdG9yZSgpOworICAgIH0KKworICAgIHBh
aW50SW5mby5wLT5yZXN0b3JlKCk7Cit9CisKK3ZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYgciwgYm9vbCBmKQoreworICAgIFFNYXRy
aXggdHJhbnNmb3JtID0gdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkgKiBsb2NhbFRyYW5zZm9y
bSgpOworICAgIHIgPSB0cmFuc2Zvcm0ubWFwUmVjdChyKTsKKyAgICAKKyAgICBSZW5kZXJCbG9j
azo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QociwgZik7Cit9CisKK2Jvb2wgUmVuZGVyRm9y
ZWlnbk9iamVjdDo6cmVxdWlyZXNMYXllcigpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OmxheW91dCgpCit7CisgICAgS0hUTUxBc3NlcnQobmVl
ZHNMYXlvdXQoKSk7CisgICAgS0hUTUxBc3NlcnQoIG1pbk1heEtub3duKCkgKTsKKworICAgIElu
dFJlY3Qgb2xkQm91bmRzOworICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBh
aW50RHVyaW5nTGF5b3V0KCk7CisgICAgaWYgKGNoZWNrRm9yUmVwYWludCkKKyAgICAgICAgb2xk
Qm91bmRzID0gbV9hYnNvbHV0ZUJvdW5kczsKKworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsK
KworICAgIG1fYWJzb2x1dGVCb3VuZHMgPSBnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCk7CisKKyAg
ICBpZiAoY2hlY2tGb3JSZXBhaW50KQorICAgICAgICByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRl
ZChvbGRCb3VuZHMsIG9sZEJvdW5kcyk7CisgICAgCisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2Up
OwogfQogCiBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KE5vZGVJbmZvJiBp
bmZvLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RB
Y3Rpb24pCkluZGV4OiBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2Fu
dmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTcgKzM2LDIy
IEBAIGNsYXNzIFJlbmRlckZvcmVpZ25PYmplY3QgOiBwdWJsaWMgUmVuZGUKIHB1YmxpYzoKICAg
ICBSZW5kZXJGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICpub2RlKTsKICAg
ICAKLSAgICBjb25zdCBjaGFyICpyZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZv
cmVpZ25PYmplY3QiOyB9Ci0gICAgdm9pZCBwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50
IHBhcmVudFgsIGludCBwYXJlbnRZKTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRm9yZWlnbk9iamVjdCI7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50
WSk7CiAgICAgCiAgICAgdmlydHVhbCBRTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxUcmFuc2Zvcm0o
Y29uc3QgUU1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyB9CiAg
ICAgCi0gICAgYm9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYsIGludCB4LCBpbnQgeSwgaW50IHR4
LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1
dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpOworICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc0xheWVyKCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworCisgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KE5vZGVJbmZvJiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwg
SGl0VGVzdEFjdGlvbik7CiAKICBwcml2YXRlOgogICAgIFFNYXRyaXggdHJhbnNsYXRpb25Gb3JB
dHRyaWJ1dGVzKCk7CiAgICAgUU1hdHJpeCBtX3RyYW5zZm9ybTsKKyAgICBJbnRSZWN0IG1fYWJz
b2x1dGVCb3VuZHM7CiB9OwogCiB9CkluZGV4OiBrY2FudmFzL1JlbmRlclBhdGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtjYW52YXMvUmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2Nh
bnZhcy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksMTAgQEAgY2xh
c3MgUmVuZGVyUGF0aDo6UHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgUmVmUHRyPEtDYW52YXNQYXRo
PiBwYXRoOwogCi0gICAgRmxvYXRSZWN0IGZpbGxCQm94LCBzdHJva2VCYm94OworICAgIEZsb2F0
UmVjdCBmaWxsQkJveDsKKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQmJveDsKICAgICBRTWF0cml4IG1h
dHJpeDsKKyAgICBJbnRSZWN0IGFic29sdXRlQm91bmRzOwogfTsgICAgICAgIAogCiAvLyBSZW5k
ZXJQYXRoCkBAIC0xNDMsMTAgKzE0NSwyMSBAQCB2b2lkIFJlbmRlclBhdGg6OmxheW91dCgpCiAg
ICAgLy8gcHJldGVuZCB0aGF0IG9uZSBvZiB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZWxlbWVudCBo
YXMgY2hhbmdlZCBvbiB0aGUgRE9NCiAgICAgLy8gdG8gZm9yY2UgdGhlIERPTSBvYmplY3QgdG8g
dXBkYXRlIHRoaXMgcmVuZGVyIG9iamVjdCB3aXRoIG5ldyBhYm9zbHV0ZSBwb3NpdGlvbiB2YWx1
ZXMuCiAKKyAgICBJbnRSZWN0IG9sZEJvdW5kczsKKyAgICBib29sIGNoZWNrRm9yUmVwYWludCA9
IGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpOworICAgIGlmIChzZWxmTmVlZHNMYXlvdXQo
KSAmJiBjaGVja0ZvclJlcGFpbnQpCisgICAgICAgIG9sZEJvdW5kcyA9IGQtPmFic29sdXRlQm91
bmRzOworCiAgICAgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSktPm5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwotICAgIEludFJlY3QgbGF5b3V0UmVjdCA9IGdldEFic29s
dXRlUmVwYWludFJlY3QoKTsKLSAgICBzZXRXaWR0aChsYXlvdXRSZWN0LndpZHRoKCkpOwotICAg
IHNldEhlaWdodChsYXlvdXRSZWN0LmhlaWdodCgpKTsKKworICAgIGQtPmFic29sdXRlQm91bmRz
ID0gZ2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpOworCisgICAgc2V0V2lkdGgoZC0+YWJzb2x1dGVC
b3VuZHMud2lkdGgoKSk7CisgICAgc2V0SGVpZ2h0KGQtPmFic29sdXRlQm91bmRzLmhlaWdodCgp
KTsKKworICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSAmJiBjaGVja0ZvclJlcGFpbnQpCisgICAg
ICAgIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkQm91bmRzKTsKKyAg
ICAgICAgCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCkluZGV4OiBrY2FudmFzL1Jl
bmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmNw
cAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU4LDggKzE1OCwxMCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQ
YWludEluZm8mIHBhCiAgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihib3VuZGluZ0JveCk7
CiAgICAgCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gYyhkZXZpY2UtPmN1cnJlbnRDb250
ZXh0KCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpKTsKLSAgICBQYWludEluZm8gcGkgPSBwYWlu
dEluZm87CisKKyAgICBQYWludEluZm8gcGkocGFpbnRJbmZvKTsKICAgICBwaS5wID0gYy5nZXQo
KTsKKyAgICBwaS5yID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5tYXBSZWN0KHBhaW50
SW5mby5yKTsKIAogICAgIGludCB4ID0gMCwgeSA9IDA7CiAgICAgaWYgKCFzaG91bGRQYWludChw
aSwgeCwgeSkpCkBAIC0xODgsOSArMTkwLDU4IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50
KFBhaW50SW5mbyYgcGEKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmNvbXB1dGVB
YnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZikKK3sKKyAgICBRTWF0cml4IHRy
YW5zZm9ybSA9IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpICogbG9jYWxUcmFuc2Zvcm0oKTsK
KyAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qocik7CisgICAgCisgICAgUmVuZGVySW1hZ2U6OmNv
bXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOworfQorCitib29sIFJlbmRlclNWR0ltYWdl
Ojpub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ksIGludCBfdHgsIGlu
dCBfdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKK3sKKyAgICBRTWF0cml4IHRvdGFs
VHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICB0b3RhbFRyYW5zZm9ybSAqPSB0
cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsKKyAgICBkb3VibGUgbG9jYWxYLCBsb2NhbFk7Cisg
ICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJ0KCkubWFwKF94ICsgX3R4LCBfeSArIF90eSwgJmxvY2Fs
WCwgJmxvY2FsWSk7CisgICAgcmV0dXJuIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChpbmZvLCAo
aW50KWxvY2FsWCwgKGludClsb2NhbFksIDAsIDAsIGhpdFRlc3RBY3Rpb24pOworfQorCitib29s
IFJlbmRlclNWR0ltYWdlOjpyZXF1aXJlc0xheWVyKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCit7CisgICAgS0hUTUxBc3NlcnQobmVl
ZHNMYXlvdXQoKSk7CisgICAgS0hUTUxBc3NlcnQoIG1pbk1heEtub3duKCkgKTsKKworICAgIElu
dFJlY3Qgb2xkQm91bmRzOworICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBh
aW50RHVyaW5nTGF5b3V0KCk7CisgICAgaWYgKGNoZWNrRm9yUmVwYWludCkKKyAgICAgICAgb2xk
Qm91bmRzID0gbV9hYnNvbHV0ZUJvdW5kczsKKworICAgIC8vIG1pbmltdW0gaGVpZ2h0CisgICAg
bV9oZWlnaHQgPSBjYWNoZWRJbWFnZSgpICYmIGNhY2hlZEltYWdlKCkgPyBpbnRyaW5zaWNIZWln
aHQoKSA6IDA7CisKKyAgICBjYWxjV2lkdGgoKTsKKyAgICBjYWxjSGVpZ2h0KCk7CisKKyAgICBt
X2Fic29sdXRlQm91bmRzID0gZ2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpOworCisgICAgaWYgKGNo
ZWNrRm9yUmVwYWludCkKKyAgICAgICAgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQob2xkQm91
bmRzLCBvbGRCb3VuZHMpOworICAgIAorICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKK30KKwog
RmxvYXRSZWN0IFJlbmRlclNWR0ltYWdlOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tl
KSBjb25zdAogewotICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkp
OworICAgIFNWR0ltYWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1l
bnQgKj4obm9kZSgpKTsKKyAgICBmbG9hdCB4T2Zmc2V0ID0gaW1hZ2UtPngoKS0+YmFzZVZhbCgp
ID8gaW1hZ2UtPngoKS0+YmFzZVZhbCgpLT52YWx1ZSgpIDogMDsKKyAgICBmbG9hdCB5T2Zmc2V0
ID0gaW1hZ2UtPnkoKS0+YmFzZVZhbCgpID8gaW1hZ2UtPnkoKS0+YmFzZVZhbCgpLT52YWx1ZSgp
IDogMDsKKyAgICByZXR1cm4gRmxvYXRSZWN0KHhPZmZzZXQsIHlPZmZzZXQsIHdpZHRoKCksIGhl
aWdodCgpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKENhY2hlZElt
YWdlKiBpbWFnZSkKQEAgLTIyMCwxMyArMjcxLDE5IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmFi
c29sdXRlUmVjdHMoRGVwcmUKICAgICByZWN0cy5hcHBlbmQoZ2V0QWJzb2x1dGVSZXBhaW50UmVj
dCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6dHJhbnNsYXRlRm9yQXR0cmlidXRlcygp
CisKK1FNYXRyaXggUmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpCiB7
Ci0gICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQgKmNvbnRleHQgPSByZW5kZXJpbmdEZXZpY2Uo
KS0+Y3VycmVudENvbnRleHQoKTsKICAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdlID0gc3RhdGlj
X2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50ICo+KG5vZGUoKSk7CiAgICAgZmxvYXQgeE9mZnNldCA9IGlt
YWdlLT54KCktPmJhc2VWYWwoKSA/IGltYWdlLT54KCktPmJhc2VWYWwoKS0+dmFsdWUoKSA6IDA7
CiAgICAgZmxvYXQgeU9mZnNldCA9IGltYWdlLT55KCktPmJhc2VWYWwoKSA/IGltYWdlLT55KCkt
PmJhc2VWYWwoKS0+dmFsdWUoKSA6IDA7Ci0gICAgY29udGV4dC0+Y29uY2F0Q1RNKFFNYXRyaXgo
KS50cmFuc2xhdGUoeE9mZnNldCwgeU9mZnNldCkpOworICAgIHJldHVybiBRTWF0cml4KCkudHJh
bnNsYXRlKHhPZmZzZXQsIHlPZmZzZXQpOworfQorCit2b2lkIFJlbmRlclNWR0ltYWdlOjp0cmFu
c2xhdGVGb3JBdHRyaWJ1dGVzKCkKK3sKKyAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4dCAqY29u
dGV4dCA9IHJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29udGV4dCgpOworICAgIGNvbnRleHQt
PmNvbmNhdENUTSh0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKSk7CiB9CiAKIH0KSW5kZXg6IGtj
YW52YXMvUmVuZGVyU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL1JlbmRlclNWR0lt
YWdlLmgJKHJldmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9SZW5kZXJTVkdJbWFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw5ICs0NywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2
aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKik7CiAgICAgICAgIHZvaWQgYWRq
dXN0UmVjdHNGb3JBc3BlY3RSYXRpbyhGbG9hdFJlY3QmIGRlc3RSZWN0LCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKmFzcGVjdFJhdGlvKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBh
cmVudFkpOworICAgICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisKKyAgICAgICAgYm9vbCBy
ZXF1aXJlc0xheWVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJl
cGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZik7CisKKyAgICAgICAgdmlydHVhbCBib29sIFJl
bmRlclNWR0ltYWdlOjpub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ks
IGludCBfdHgsIGludCBfdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbik7CisKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIHRyYW5zbGF0ZUZvckF0dHJpYnV0ZXMoKTsKKyAgICAgICAg
UU1hdHJpeCB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsKICAgICAgICAgUU1hdHJpeCBtX3Ry
YW5zZm9ybTsKKyAgICAgICAgSW50UmVjdCBtX2Fic29sdXRlQm91bmRzOwogICAgIH07CiB9CiAK
SW5kZXg6IGtjYW52YXMvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9S
ZW5kZXJTVkdUZXh0LmNwcAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2FudmFzL1JlbmRlclNWR1Rl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4
dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjKGRl
dmljZS0+Y3VycmVudENvbnRleHQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpOwogICAgIFBh
aW50SW5mbyBwaSA9IHBhaW50SW5mbzsKICAgICBwaS5wID0gYy5nZXQoKTsKKyAgICBwaS5yID0g
KHRyYW5zbGF0aW9uVG9wVG9CYXNlbGluZSgpICogdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkg
KiBhYnNvbHV0ZVRyYW5zZm9ybSgpKS5pbnZlcnQoKS5tYXBSZWN0KHBhaW50SW5mby5yKTsKIAog
ICAgIEtSZW5kZXJpbmdQYWludFNlcnZlciAqZmlsbFBhaW50U2VydmVyID0gS1NWR1BhaW50ZXJG
YWN0b3J5OjpmaWxsUGFpbnRTZXJ2ZXIoc3R5bGUoKSwgdGhpcyk7CiAgICAgaWYgKGZpbGxQYWlu
dFNlcnZlcikgewpAQCAtMTI5LDYgKzEzMCw0MCBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OnBhaW50
KFBhaW50SW5mbyYgcGFpCiAgICAgfQogfQogCit2b2lkIFJlbmRlclNWR1RleHQ6OmNvbXB1dGVB
YnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZikKK3sKKyAgICBRTWF0cml4IHRy
YW5zZm9ybSA9IHRyYW5zbGF0aW9uVG9wVG9CYXNlbGluZSgpICogdHJhbnNsYXRpb25Gb3JBdHRy
aWJ1dGVzKCkgKiBhYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgIHIgPSB0cmFuc2Zvcm0ubWFwUmVj
dChyKTsKKyAgICAKKyAgICBSZW5kZXJDb250YWluZXI6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRS
ZWN0KHIsIGYpOworfQorCitib29sIFJlbmRlclNWR1RleHQ6OnJlcXVpcmVzTGF5ZXIoKQorewor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQorewor
ICAgIEtIVE1MQXNzZXJ0KG5lZWRzTGF5b3V0KCkpOworICAgIEtIVE1MQXNzZXJ0KG1pbk1heEtu
b3duKCkpOworCisgICAgSW50UmVjdCBvbGRCb3VuZHM7CisgICAgYm9vbCBjaGVja0ZvclJlcGFp
bnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKKyAgICBpZiAoY2hlY2tGb3JSZXBh
aW50KQorICAgICAgICBvbGRCb3VuZHMgPSBtX2Fic29sdXRlQm91bmRzOworCisgICAgUmVuZGVy
QmxvY2s6OmxheW91dCgpOworCisgICAgbV9hYnNvbHV0ZUJvdW5kcyA9IGdldEFic29sdXRlUmVw
YWludFJlY3QoKTsKKworICAgIGJvb2wgcmVwYWludGVkID0gZmFsc2U7CisgICAgaWYgKGNoZWNr
Rm9yUmVwYWludCkKKyAgICAgICAgcmVwYWludGVkID0gcmVwYWludEFmdGVyTGF5b3V0SWZOZWVk
ZWQob2xkQm91bmRzLCBvbGRCb3VuZHMpOworICAgIAorICAgIHNldE5lZWRzTGF5b3V0KGZhbHNl
KTsKK30KKwogYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywg
aW50IF94LCBpbnQgX3ksIGludCBfdHgsIGludCBfdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFj
dGlvbikKIHsKICAgICBRTWF0cml4IHRvdGFsVHJhbnNmb3JtID0gdHJhbnNsYXRpb25Gb3JBdHRy
aWJ1dGVzKCk7CkluZGV4OiBrY2FudmFzL1JlbmRlclNWR1RleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBr
Y2FudmFzL1JlbmRlclNWR1RleHQuaAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2FudmFzL1JlbmRl
clNWR1RleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMjAgKzM2LDI1IEBAIGNsYXNzIFJlbmRl
clNWR1RleHQgOiBwdWJsaWMgUmVuZGVyQmxvY2sKIHB1YmxpYzoKICAgICBSZW5kZXJTVkdUZXh0
KFNWR1RleHRFbGVtZW50ICpub2RlKTsKIAotICAgIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBj
b25zdCB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dCI7IH0KLSAgICB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CisgICAgdmlydHVhbCBjb25zdCBjaGFyICpy
ZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAgICAg
CiAgICAgdmlydHVhbCBRTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxUcmFuc2Zvcm0oY29uc3QgUU1h
dHJpeCYgdHJhbnNmb3JtKSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyB9CiAgICAgCi0gICAg
Ym9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYsIGludCBfeCwgaW50IF95LCBpbnQgX3R4LCBpbnQg
X3R5LCBXZWJDb3JlOjpIaXRUZXN0QWN0aW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoTm9kZUluZm8mLCBpbnQgX3gsIGludCBfeSwgaW50IF90eCwgaW50IF90eSwgV2ViQ29yZTo6
SGl0VGVzdEFjdGlvbik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhEZXByZWNh
dGVkVmFsdWVMaXN0PEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkpOwogCisgICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZik7
CisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCk7CisgICAgCiAgcHJpdmF0ZToKICAgICBRTWF0cml4IHRyYW5zbGF0aW9uVG9wVG9CYXNl
bGluZSgpOwogICAgIFFNYXRyaXggdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCk7CiAgICAgUU1h
dHJpeCBtX3RyYW5zZm9ybTsKKyAgICBJbnRSZWN0IG1fYWJzb2x1dGVCb3VuZHM7CiB9OwogCiB9
CkluZGV4OiBwbGF0Zm9ybS9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxNDg5NSkKKysrIHBs
YXRmb3JtL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM2LDE5
ICs2MzYsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShjb25zdCBGbAogCiBG
bG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKLSAgICBDR1JlY3QgZGV2aWNlUmVjdCA9IENHQ29udGV4dENvbnZlcnRS
ZWN0VG9EZXZpY2VTcGFjZShwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCk7Ci0gICAgZGV2aWNlUmVj
dC5vcmlnaW4ueCA9IHJvdW5kZihkZXZpY2VSZWN0Lm9yaWdpbi54KTsKLSAgICBkZXZpY2VSZWN0
Lm9yaWdpbi55ID0gcm91bmRmKGRldmljZVJlY3Qub3JpZ2luLnkpOwotICAgIGRldmljZVJlY3Qu
c2l6ZS53aWR0aCA9IHJvdW5kZihkZXZpY2VSZWN0LnNpemUud2lkdGgpOwotICAgIGRldmljZVJl
Y3Quc2l6ZS5oZWlnaHQgPSByb3VuZGYoZGV2aWNlUmVjdC5zaXplLmhlaWdodCk7CisgICAgLy8g
SXQncyBpbXBvcnRhbnQgdG8gc2VwYXJhdGVseSB0cmFuc2Zvcm0gdGhlIHR3byBjb3JuZXJzLCBh
cyB0cmFuc2Zvcm1pbmcgdGhlIHdob2xlIHJlY3QKKyAgICAvLyB3aWxsIGdyYWIgYm91bmRpbmcg
Ym94ZXMsIGFuZCBzbyB3aWxsIGVubGFyZ2UgdGhlIHJlY3Qgd2hlbiB0aGVyZSBpcyBhbnkgcm90
YXRpb24gb3Igc2tldworICAgIC8vIGluIHRoZSBjdXJyZW50IHRyYW5zZm9ybQorICAgIENHUG9p
bnQgZGV2aWNlT3JpZ2luID0gQ0dDb250ZXh0Q29udmVydFBvaW50VG9EZXZpY2VTcGFjZShwbGF0
Zm9ybUNvbnRleHQoKSwgcmVjdC5sb2NhdGlvbigpKTsKKyAgICBDR1BvaW50IGRldmljZUxvd2Vy
UmlnaHQgPSBDR0NvbnRleHRDb252ZXJ0UG9pbnRUb0RldmljZVNwYWNlKHBsYXRmb3JtQ29udGV4
dCgpLCByZWN0LmxvY2F0aW9uKCkgKyByZWN0LnNpemUoKSk7CisKKyAgICBkZXZpY2VPcmlnaW4u
eCA9IHJvdW5kZihkZXZpY2VPcmlnaW4ueCk7CisgICAgZGV2aWNlT3JpZ2luLnkgPSByb3VuZGYo
ZGV2aWNlT3JpZ2luLnkpOworICAgIGRldmljZUxvd2VyUmlnaHQueCA9IHJvdW5kZihkZXZpY2VM
b3dlclJpZ2h0LngpOworICAgIGRldmljZUxvd2VyUmlnaHQueSA9IHJvdW5kZihkZXZpY2VMb3dl
clJpZ2h0LnkpOwogICAgIAogICAgIC8vIERvbid0IGxldCB0aGUgaGVpZ2h0IG9yIHdpZHRoIHJv
dW5kIHRvIDAgdW5sZXNzIGVpdGhlciB3YXMgb3JpZ2luYWxseSAwCi0gICAgaWYgKGRldmljZVJl
Y3Quc2l6ZS5oZWlnaHQgPT0gMCAmJiByZWN0LmhlaWdodCgpICE9IDApCi0gICAgICAgIGRldmlj
ZVJlY3Quc2l6ZS5oZWlnaHQgPSAxOwotICAgIGlmIChkZXZpY2VSZWN0LnNpemUud2lkdGggPT0g
MCAmJiByZWN0LndpZHRoKCkgIT0gMCkKLSAgICAgICAgZGV2aWNlUmVjdC5zaXplLndpZHRoID0g
MTsKKyAgICBpZiAoZGV2aWNlT3JpZ2luLnkgPT0gZGV2aWNlTG93ZXJSaWdodC55ICYmIHJlY3Qu
aGVpZ2h0KCkgIT0gMCkKKyAgICAgICAgZGV2aWNlTG93ZXJSaWdodC55ICs9IDE7CisgICAgaWYg
KGRldmljZU9yaWdpbi54ID09IGRldmljZUxvd2VyUmlnaHQueCAmJiByZWN0LndpZHRoKCkgIT0g
MCkKKyAgICAgICAgZGV2aWNlTG93ZXJSaWdodC54ICs9IDE7CiAgICAgCi0gICAgcmV0dXJuIENH
Q29udGV4dENvbnZlcnRSZWN0VG9Vc2VyU3BhY2UocGxhdGZvcm1Db250ZXh0KCksIGRldmljZVJl
Y3QpOworICAgIEZsb2F0UG9pbnQgcm91bmRlZE9yaWdpbiA9IENHQ29udGV4dENvbnZlcnRQb2lu
dFRvVXNlclNwYWNlKHBsYXRmb3JtQ29udGV4dCgpLCBkZXZpY2VPcmlnaW4pOworICAgIEZsb2F0
UG9pbnQgcm91bmRlZExvd2VyUmlnaHQgPSBDR0NvbnRleHRDb252ZXJ0UG9pbnRUb1VzZXJTcGFj
ZShwbGF0Zm9ybUNvbnRleHQoKSwgZGV2aWNlTG93ZXJSaWdodCk7CisKKyAgICByZXR1cm4gRmxv
YXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJvdW5kZWRMb3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQoY29uc3QgSW50UG9p
bnQmIHBvaW50LCBpbnQgeU9mZnNldCwgaW50IHdpZHRoLCBib29sIHByaW50aW5nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8919</attachid>
            <date>2006-06-19 01:53:30 -0700</date>
            <delta_ts>2006-06-19 13:27:43 -0700</delta_ts>
            <desc>even better patch (doesn&apos;t break opacity) plus some manual tests</desc>
            <filename>svg-animation-repaint.patch.txt</filename>
            <type>text/plain</type>
            <size>56715</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0OTA5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjQgQEAKKzIwMDYtMDYt
MTggIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZpeGVkIGh0dHA6Ly9idWd6aWxsYS5v
cGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4OAorICAgICAgICAiQW5pbWF0ZWQgR0lG
cyBkbyBub3QgcmVzcGVjdCB0cmFuc2Zvcm1zIGluIFNWRyIKKworICAgICAgICAqIGtjYW52YXMv
S0NhbnZhc0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLQ2FudmFzQ29udGFpbmVy
Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdCk6IE92ZXJyaWRlIGJhc2UgY2xhc3MsIGFuZCBh
cHBseQorICAgICAgICBhcHByb3ByaWF0ZSB0cmFuc2Zvcm1zLCBzbyBkYW1hZ2UgcmVjdHMgaW4g
dHJhbnNmb3JtZWQgU1ZHIGNvbnRlbnQgZ2V0IHByb3BhZ2F0ZWQgdXAgcHJvcGVybHkuCisgICAg
ICAgIChXZWJDb3JlOjpLQ2FudmFzQ29udGFpbmVyOjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KTog
bm90ZSBhIEZJWE1FOyB0aGlzIG1ldGhvZAorICAgICAgICBzZWVtcyB3cm9uZy4KKyAgICAgICAg
KiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuaDogUHJvdG90eXBlIG5ldyBtZXRob2QuCisKKyAg
ICAgICAgKiBjc3Mvc3ZnLmNzczogRG9uJ3QgYXBwbHkgb3ZlcmZsb3c6aGlkZGVuIHRvIGZvcmVp
Z25PYmplY3QsIHNpbmNlIHRoYXQgbWFrZXMgaXQgYSBSZW5kZXJMYXllcgorICAgICAgICBzbyBp
dCBwYWludHMgdHdpY2UuCisgICAgICAgICoga2NhbnZhcy9SZW5kZXJGb3JlaWduT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KTogVHJhbnNm
b3JtIHRoZSBkYW1hZ2UgcmVjdCBiZWZvcmUgcGFzc2luZyBpdCBkb3duIHRvIEhUTUwgY29udGVu
dCwKKyAgICAgICAgc28gZXZlcnl0aGluZyBwYWludHMgdGhhdCBpcyBzdXBwb3NlZCB0by4gQWxz
byBoYW5kbGUgb3BhY2l0eSBoZXJlIHNpbmNlIHdlIHdvbid0IGdldCBsYXllcnMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGb3JlaWduT2JqZWN0Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVj
dCk6IE92ZXJyaWRlIGJhc2UgY2xhc3MsIGFuZCBhcHBseQorICAgICAgICBhcHByb3ByaWF0ZSB0
cmFuc2Zvcm1zLCBzbyBkYW1hZ2UgcmVjdHMgaW4gSFRNTCBlbWJlZGRlZCBpbiBTVkcgZ2V0IHBy
b3BhZ2F0ZWQgdXAgcHJvcGVybHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGb3JlaWduT2Jq
ZWN0OjpyZXF1aXJlc0xheWVyKTogTmV2ZXIgdXNlIGEgUmVuZGVyTGF5ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGb3JlaWduT2JqZWN0OjpsYXlvdXQpOiBNYWtlIHN1cmUgdG8gZGlydHkg
b3VyIHByZXZpb3VzIGJvdW5kcyB3aGVuIGxheW91dAorICAgICAgICBjaGFuZ2VzLCBhcyBieSB0
cmFuc2Zvcm0uCisgICAgICAgICoga2NhbnZhcy9SZW5kZXJGb3JlaWduT2JqZWN0Lmg6CisKKyAg
ICAgICAgKiBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ltYWdlOjpwYWludCk6IFRyYW5zZm9ybSB0aGUgZGFtYWdlIHJlY3Qgd2hlbiBwYWlu
dGluZy4gQWxzbyBoYW5kbGUgb3BhY2l0eSAKKyAgICAgICAgaGVyZSBzaW5jZSB3ZSB3b24ndCBn
ZXQgbGF5ZXJzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0
ZUFic29sdXRlUmVwYWludFJlY3QpOiBPdmVycmlkZSBiYXNlIGNsYXNzLCBhbmQgYXBwbHkKKyAg
ICAgICAgYXBwcm9wcmlhdGUgdHJhbnNmb3Jtcywgc28gZGFtYWdlIHJlY3RzIGluIFNWRyBpbWFn
ZXMgIGdldCBwcm9wYWdhdGVkIHVwIHByb3Blcmx5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcyk6IE5ldyBoZWxwZXIgbWV0aG9kLCBm
YWN0b3JlZCBvdXQgb2YgYmVsb3cuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6
dHJhbnNsYXRlRm9yQXR0cmlidXRlcyk6IFVzZSBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0ltYWdlOjpyZXF1aXJlc0xheWVyKTogTmV2ZXIgdXNlIGEgUmVuZGVyTGF5ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KTogTWFrZSBzdXJlIHRvIHBy
b3Blcmx5IGRpcnR5IHRoZSBvbGQgYm91bmRzLCBhY2NvdW50aW5nCisgICAgICAgIGZvciB0cmFu
c2Zvcm1zLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnJlbGF0aXZlQkJveCk6
IENvcnJlY3QgYmJveCBjb21wdXRhdGlvbi4KKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR0lt
YWdlLmg6CisKKyAgICAgICAgKiBrY2FudmFzL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cGFpbnQpOiBUcmFuc2Zvcm0gaW5jb21pbmcgZGFtYWdl
IHJlY3QuIEhhbmRsZSBvcGFjaXR5IGhlcmUgc2luY2Ugd2UKKyAgICAgICAgd29uJ3QgZ2V0IGEg
bGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlQWJzb2x1dGVS
ZXBhaW50UmVjdCk6IEFwcGx5IHRyYW5zZm9ybXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdUZXh0OjpyZXF1aXJlc0xheWVyKTogTmV2ZXIgdXNlIGEgUmVuZGVyTGF5ZXIuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpsYXlvdXQpOiBNYWtlIHN1cmUgdG8gZGlydHkgdGhl
IG9sZCBib3VuZHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhl
bHMpOiBJbnN0ZWFkIG9mIHRyYW5zZm9ybWluZyByZWN0IHRvIGRldmljZSBzcGFjZQorICAgICAg
ICBhbmQgYmFjayB0byB1c2VyIHNwYWNlLCBkbyB0aGlzIGZvciB0aGUgb3JpZ2luIGFuZCBsb3dl
ciByaWdodCBjb3JuZXIgb2YgdGhlIHJlY3QuIE90aGVyd2lzZSB0aGUKKyAgICAgICAgcmVjdCB3
aWxsIGdldCBpbmZsYXRlZCBpZiB1c2VyIHNwYWNlIGlzIHJvdGF0ZWQgb3Igc2tld2VkLgorCisg
ICAgICAgICoga2NhbnZhcy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clBhdGg6OmxheW91dCk6IE1ha2Ugc3VyZSB0byBkaXJ0eSB0aGUgb2xkIGJvdW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OnBhaW50KTogSGhhbmRsZSBvcGFjaXR5IGhlcmUuCisg
ICAgICAgIAorICAgICAgICBCb251cyBmaXg6CisgICAgICAgIAorICAgICAgICAqIGtjYW52YXMv
UmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5v
ZGVBdFBvaW50KTogRml4IGhpdCB0ZXN0aW5nLiBXYXNuJ3QgYXBwbHlpbmcgdGhlIHgveQorICAg
ICAgICBhdHRyaWJ1dGUgdHJhbnNmb3JtLgorCiAyMDA2LTA2LTE4ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBraWx6ZXIubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IGRhcmluLgpJbmRleDog
Y3NzL3N2Zy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL3N2Zy5jc3MJKHJldmlzaW9uIDE0ODk1KQor
KysgY3NzL3N2Zy5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgc3ZnIHsKICAg
ICBoZWlnaHQ6IDEwMCU7CiB9CiAKLXN2Zywgc3ltYm9sLCBtYXJrZXIsIHBhdHRlcm4sIGZvcmVp
Z25PYmplY3Qgeworc3ZnLCBzeW1ib2wsIG1hcmtlciwgcGF0dGVybiB7CiAgICAgb3ZlcmZsb3c6
IGhpZGRlbgogfQogCkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysg
a2NhbnZhcy9LQ2FudmFzQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIktDYW52YXNDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Myw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qgdmlld3BvcnQ7CiAgICAgRmxvYXRS
ZWN0IHZpZXdCb3g7CiAgICAgS0NBbGlnbiBhbGlnbjsKKyAgICBJbnRSZWN0IGFic29sdXRlQm91
bmRzOwogfTsKIAogS0NhbnZhc0NvbnRhaW5lcjo6S0NhbnZhc0NvbnRhaW5lcihTVkdTdHlsZWRF
bGVtZW50ICpub2RlKQpAQCAtMTEwLDEzICsxMTIsMTUgQEAgdm9pZCBLQ2FudmFzQ29udGFpbmVy
OjpsYXlvdXQoKQogCiAgICAgSW50UmVjdCBvbGRCb3VuZHM7CiAgICAgYm9vbCBjaGVja0ZvclJl
cGFpbnQgPSBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKTsKLSAgICBpZiAoY2hlY2tGb3JS
ZXBhaW50KQotICAgICAgICBvbGRCb3VuZHMgPSBnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCk7Cisg
ICAgaWYgKHNlbGZOZWVkc0xheW91dCgpICYmIGNoZWNrRm9yUmVwYWludCkKKyAgICAgICAgb2xk
Qm91bmRzID0gZC0+YWJzb2x1dGVCb3VuZHM7CiAKICAgICBjYWxjV2lkdGgoKTsKICAgICBjYWxj
SGVpZ2h0KCk7CiAKLSAgICBpZiAoY2hlY2tGb3JSZXBhaW50KQorICAgIGQtPmFic29sdXRlQm91
bmRzID0gZ2V0QWJzb2x1dGVSZXBhaW50UmVjdCgpOworCisgICAgaWYgKHNlbGZOZWVkc0xheW91
dCgpICYmIGNoZWNrRm9yUmVwYWludCkKICAgICAgICAgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVk
ZWQob2xkQm91bmRzLCBvbGRCb3VuZHMpOwogICAgICAgICAKICAgICBSZW5kZXJDb250YWluZXI6
OmxheW91dCgpOwpAQCAtMjUyLDkgKzI1NiwyMSBAQCBJbnRSZWN0IEtDYW52YXNDb250YWluZXI6
OmdldEFic29sdXRlUmVwCiAgICAgaWYgKGZpbHRlcikKICAgICAgICAgcmVwYWludFJlY3QudW5p
dGUoZW5jbG9zaW5nSW50UmVjdChmaWx0ZXItPmZpbHRlckJCb3hGb3JJdGVtQkJveChyZXBhaW50
UmVjdCkpKTsKIAorICAgIC8vIEZJWE1FOiB3aGF0IGFib3V0IHRyYW5zZm9ybT8KKwogICAgIHJl
dHVybiByZXBhaW50UmVjdDsKIH0KIAordm9pZCBLQ2FudmFzQ29udGFpbmVyOjpjb21wdXRlQWJz
b2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpCit7CisgICAgUU1hdHJpeCB0cmFu
c2Zvcm0gPSBsb2NhbFRyYW5zZm9ybSgpOworICAgIHIgPSB0cmFuc2Zvcm0ubWFwUmVjdChyKTsK
KyAgICAKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgZmlsdGVyCisKKyAgICBSZW5kZXJDb250YWlu
ZXI6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOworfQorCiBRTWF0cml4IEtDYW52
YXNDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4gdmll
d3BvcnRUcmFuc2Zvcm0oKSAqIFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsK
SW5kZXg6IGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMv
S0NhbnZhc0NvbnRhaW5lci5oCShyZXZpc2lvbiAxNDg5NSkKKysrIGtjYW52YXMvS0NhbnZhc0Nv
bnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvICZwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQg
cGFyZW50WSk7CiAgICAgCiAgICAgdmlydHVhbCBJbnRSZWN0IGdldEFic29sdXRlUmVwYWludFJl
Y3QoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRS
ZWN0JiByLCBib29sIGYpOworCiAgICAgdmlydHVhbCBRTWF0cml4IGFic29sdXRlVHJhbnNmb3Jt
KCkgY29uc3Q7CiAKICAgICBib29sIGZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JikgY29u
c3Q7CkluZGV4OiBrY2FudmFzL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtjYW52YXMvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2Nh
bnZhcy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMjAgKzU2
LDY2IEBAIHZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmYKICAgICAgICAg
Y29udGV4dCA9IHBhaW50SW5mby5wLT5jcmVhdGVSZW5kZXJpbmdEZXZpY2VDb250ZXh0KCk7CiAg
ICAgICAgIGRldmljZS0+cHVzaENvbnRleHQoY29udGV4dCk7CiAgICAgICAgIHNob3VsZFBvcENv
bnRleHQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICBwYWludEluZm8ucC0+c2F2ZSgpOwor
ICAgIH0KKworICAgIHBhaW50SW5mby5wLT5zYXZlKCk7CiAKICAgICBjb250ZXh0LT5jb25jYXRD
VE0oUU1hdHJpeCgpLnRyYW5zbGF0ZShwYXJlbnRYLCBwYXJlbnRZKSk7CiAgICAgY29udGV4dC0+
Y29uY2F0Q1RNKGxvY2FsVHJhbnNmb3JtKCkpOwogICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFu
c2xhdGlvbkZvckF0dHJpYnV0ZXMoKSk7Ci0gICAgCi0gICAgUmVuZGVyQmxvY2s6OnBhaW50KHBh
aW50SW5mbywgMCwgMCk7CiAKKyAgICBwYWludEluZm8ucC0+YWRkQ2xpcChnZXRDbGlwUmVjdChw
YXJlbnRYLCBwYXJlbnRZKSk7CisKKyAgICBmbG9hdCBvcGFjaXR5ID0gc3R5bGUoKS0+b3BhY2l0
eSgpOworICAgIGlmIChvcGFjaXR5IDwgMS4wZikKKyAgICAgICAgcGFpbnRJbmZvLnAtPmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisKKyAgICBQYWludEluZm8gcGkocGFpbnRJbmZv
KTsKKyAgICBwaS5yID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnQoKS5tYXBSZWN0KHBhaW50
SW5mby5yKTsKKyAgICBSZW5kZXJCbG9jazo6cGFpbnQocGksIDAsIDApOworCisgICAgaWYgKG9w
YWNpdHkgPCAxLjBmKQorICAgICAgICBwYWludEluZm8ucC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKKyAgICAKICAgICBpZiAoc2hvdWxkUG9wQ29udGV4dCkgewogICAgICAgICBkZXZpY2UtPnBv
cENvbnRleHQoKTsKICAgICAgICAgZGVsZXRlIGNvbnRleHQ7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHBhaW50SW5mby5wLT5yZXN0b3JlKCk7CisgICAgfQorCisgICAgcGFpbnRJbmZvLnAtPnJlc3Rv
cmUoKTsKK30KKwordm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0Ojpjb21wdXRlQWJzb2x1dGVSZXBh
aW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpCit7CisgICAgUU1hdHJpeCB0cmFuc2Zvcm0gPSB0
cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKSAqIGxvY2FsVHJhbnNmb3JtKCk7CisgICAgciA9IHRy
YW5zZm9ybS5tYXBSZWN0KHIpOworICAgIAorICAgIFJlbmRlckJsb2NrOjpjb21wdXRlQWJzb2x1
dGVSZXBhaW50UmVjdChyLCBmKTsKK30KKworYm9vbCBSZW5kZXJGb3JlaWduT2JqZWN0OjpyZXF1
aXJlc0xheWVyKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyRm9yZWln
bk9iamVjdDo6bGF5b3V0KCkKK3sKKyAgICBLSFRNTEFzc2VydChuZWVkc0xheW91dCgpKTsKKyAg
ICBLSFRNTEFzc2VydChtaW5NYXhLbm93bigpKTsKKworICAgIEludFJlY3Qgb2xkQm91bmRzOwor
ICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCk7
CisgICAgaWYgKGNoZWNrRm9yUmVwYWludCkKKyAgICAgICAgb2xkQm91bmRzID0gbV9hYnNvbHV0
ZUJvdW5kczsKKworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKworICAgIG1fYWJzb2x1dGVC
b3VuZHMgPSBnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCk7CisKKyAgICBpZiAoY2hlY2tGb3JSZXBh
aW50KQorICAgICAgICByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChvbGRCb3VuZHMsIG9sZEJv
dW5kcyk7CisgICAgCisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCiBib29sIFJlbmRl
ckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KE5vZGVJbmZvJiBpbmZvLCBpbnQgeCwgaW50IHks
IGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCkluZGV4OiBrY2Fu
dmFzL1JlbmRlckZvcmVpZ25PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL1JlbmRlckZv
cmVpZ25PYmplY3QuaAkocmV2aXNpb24gMTQ4OTUpCisrKyBrY2FudmFzL1JlbmRlckZvcmVpZ25P
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTcgKzM2LDIyIEBAIGNsYXNzIFJlbmRlckZv
cmVpZ25PYmplY3QgOiBwdWJsaWMgUmVuZGUKIHB1YmxpYzoKICAgICBSZW5kZXJGb3JlaWduT2Jq
ZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICpub2RlKTsKICAgICAKLSAgICBjb25zdCBjaGFy
ICpyZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZvcmVpZ25PYmplY3QiOyB9Ci0g
ICAgdm9pZCBwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJl
bnRZKTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVy
biAiUmVuZGVyRm9yZWlnbk9iamVjdCI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAgICAgCiAgICAgdmly
dHVhbCBRTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxUcmFuc2Zvcm0oY29uc3QgUU1hdHJpeCYgdHJh
bnNmb3JtKSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyB9CiAgICAgCi0gICAgYm9vbCBub2Rl
QXRQb2ludChOb2RlSW5mbyYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RB
Y3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRS
ZWN0JiByLCBib29sIGYpOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCk7CisgICAg
dmlydHVhbCB2b2lkIGxheW91dCgpOworCisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KE5v
ZGVJbmZvJiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CiAK
ICBwcml2YXRlOgogICAgIFFNYXRyaXggdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCk7CiAgICAg
UU1hdHJpeCBtX3RyYW5zZm9ybTsKKyAgICBJbnRSZWN0IG1fYWJzb2x1dGVCb3VuZHM7CiB9Owog
CiB9CkluZGV4OiBrY2FudmFzL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMv
UmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9SZW5kZXJQYXRoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksMTAgQEAgY2xhc3MgUmVuZGVyUGF0aDo6UHJp
dmF0ZSB7CiBwdWJsaWM6CiAgICAgUmVmUHRyPEtDYW52YXNQYXRoPiBwYXRoOwogCi0gICAgRmxv
YXRSZWN0IGZpbGxCQm94LCBzdHJva2VCYm94OworICAgIEZsb2F0UmVjdCBmaWxsQkJveDsKKyAg
ICBGbG9hdFJlY3Qgc3Ryb2tlQmJveDsKICAgICBRTWF0cml4IG1hdHJpeDsKKyAgICBJbnRSZWN0
IGFic29sdXRlQm91bmRzOwogfTsgICAgICAgIAogCiAvLyBSZW5kZXJQYXRoCkBAIC0xNDMsMTAg
KzE0NSwyMSBAQCB2b2lkIFJlbmRlclBhdGg6OmxheW91dCgpCiAgICAgLy8gcHJldGVuZCB0aGF0
IG9uZSBvZiB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZWxlbWVudCBoYXMgY2hhbmdlZCBvbiB0aGUg
RE9NCiAgICAgLy8gdG8gZm9yY2UgdGhlIERPTSBvYmplY3QgdG8gdXBkYXRlIHRoaXMgcmVuZGVy
IG9iamVjdCB3aXRoIG5ldyBhYm9zbHV0ZSBwb3NpdGlvbiB2YWx1ZXMuCiAKKyAgICBJbnRSZWN0
IG9sZEJvdW5kczsKKyAgICBib29sIGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9yUmVwYWludER1
cmluZ0xheW91dCgpOworICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSAmJiBjaGVja0ZvclJlcGFp
bnQpCisgICAgICAgIG9sZEJvdW5kcyA9IGQtPmFic29sdXRlQm91bmRzOworCiAgICAgc3RhdGlj
X2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSktPm5vdGlmeUF0dHJpYnV0ZUNoYW5n
ZSgpOwotICAgIEludFJlY3QgbGF5b3V0UmVjdCA9IGdldEFic29sdXRlUmVwYWludFJlY3QoKTsK
LSAgICBzZXRXaWR0aChsYXlvdXRSZWN0LndpZHRoKCkpOwotICAgIHNldEhlaWdodChsYXlvdXRS
ZWN0LmhlaWdodCgpKTsKKworICAgIGQtPmFic29sdXRlQm91bmRzID0gZ2V0QWJzb2x1dGVSZXBh
aW50UmVjdCgpOworCisgICAgc2V0V2lkdGgoZC0+YWJzb2x1dGVCb3VuZHMud2lkdGgoKSk7Cisg
ICAgc2V0SGVpZ2h0KGQtPmFic29sdXRlQm91bmRzLmhlaWdodCgpKTsKKworICAgIGlmIChzZWxm
TmVlZHNMYXlvdXQoKSAmJiBjaGVja0ZvclJlcGFpbnQpCisgICAgICAgIHJlcGFpbnRBZnRlckxh
eW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkQm91bmRzKTsKKyAgICAgICAgCiAgICAgc2V0TmVl
ZHNMYXlvdXQoZmFsc2UpOwogfQogCkBAIC0yMzAsOCArMjQzLDcgQEAgdm9pZCBSZW5kZXJQYXRo
OjpwYWludChQYWludEluZm8gJnBhaW50SQogICAgICAgICBzdHJva2VQYWludFNlcnZlci0+ZHJh
dyhjb250ZXh0LCB0aGlzLCBBUFBMWV9UT19TVFJPS0UpOwogICAgIH0KIAotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQ+IGMoY29udGV4dC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpOwotICAg
IGRyYXdNYXJrZXJzSWZOZWVkZWQoYy5nZXQoKSwgcGFpbnRJbmZvLnIsIHBhdGgoKSk7CisgICAg
ZHJhd01hcmtlcnNJZk5lZWRlZChwYWludEluZm8ucCwgcGFpbnRJbmZvLnIsIHBhdGgoKSk7CiAK
ICAgICAvLyBhY3R1YWxseSBhcHBseSB0aGUgZmlsdGVyCiAgICAgaWYgKGZpbHRlcikKSW5kZXg6
IGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMvUmVuZGVy
U1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAxNDg5NSkKKysrIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsOCArMTU4LDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKGJv
dW5kaW5nQm94KTsKICAgICAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjKGRldmljZS0+
Y3VycmVudENvbnRleHQoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkpOwotICAgIFBhaW50SW5m
byBwaSA9IHBhaW50SW5mbzsKKworICAgIGZsb2F0IG9wYWNpdHkgPSBzdHlsZSgpLT5vcGFjaXR5
KCk7CisgICAgaWYgKG9wYWNpdHkgPCAxLjBmKQorICAgICAgICBjLT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworCisgICAgUGFpbnRJbmZvIHBpKHBhaW50SW5mbyk7CiAgICAgcGku
cCA9IGMuZ2V0KCk7CisgICAgcGkuciA9IGFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJ0KCkubWFw
UmVjdChwYWludEluZm8ucik7CiAKICAgICBpbnQgeCA9IDAsIHkgPSAwOwogICAgIGlmICghc2hv
dWxkUGFpbnQocGksIHgsIHkpKQpAQCAtMTc5LDYgKzE4NSw5IEBAIHZvaWQgUmVuZGVyU1ZHSW1h
Z2U6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICBpZiAoZmlsdGVyKQogICAgICAgICBmaWx0ZXIt
PmFwcGx5RmlsdGVyKGJvdW5kaW5nQm94KTsKICAgICAKKyAgICBpZiAob3BhY2l0eSA8IDEuMGYp
CisgICAgICAgIGMtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisKICAgICAvLyByZXN0b3JlIGRy
YXdpbmcgc3RhdGUKICAgICBpZiAoIXNob3VsZFBvcENvbnRleHQpCiAgICAgICAgIHBhaW50SW5m
by5wLT5yZXN0b3JlKCk7CkBAIC0xODgsOSArMTk3LDU4IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmNv
bXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZikKK3sKKyAgICBRTWF0
cml4IHRyYW5zZm9ybSA9IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpICogbG9jYWxUcmFuc2Zv
cm0oKTsKKyAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qocik7CisgICAgCisgICAgUmVuZGVySW1h
Z2U6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOworfQorCitib29sIFJlbmRlclNW
R0ltYWdlOjpub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ksIGludCBf
dHgsIGludCBfdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKK3sKKyAgICBRTWF0cml4
IHRvdGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICB0b3RhbFRyYW5zZm9y
bSAqPSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKTsKKyAgICBkb3VibGUgbG9jYWxYLCBsb2Nh
bFk7CisgICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJ0KCkubWFwKF94ICsgX3R4LCBfeSArIF90eSwg
JmxvY2FsWCwgJmxvY2FsWSk7CisgICAgcmV0dXJuIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChp
bmZvLCAoaW50KWxvY2FsWCwgKGludClsb2NhbFksIDAsIDAsIGhpdFRlc3RBY3Rpb24pOworfQor
Citib29sIFJlbmRlclNWR0ltYWdlOjpyZXF1aXJlc0xheWVyKCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmxheW91dCgpCit7CisgICAgS0hUTUxBc3Nl
cnQobmVlZHNMYXlvdXQoKSk7CisgICAgS0hUTUxBc3NlcnQobWluTWF4S25vd24oKSk7CisKKyAg
ICBJbnRSZWN0IG9sZEJvdW5kczsKKyAgICBib29sIGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9y
UmVwYWludER1cmluZ0xheW91dCgpOworICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCisgICAgICAg
IG9sZEJvdW5kcyA9IG1fYWJzb2x1dGVCb3VuZHM7CisKKyAgICAvLyBtaW5pbXVtIGhlaWdodAor
ICAgIG1faGVpZ2h0ID0gY2FjaGVkSW1hZ2UoKSAmJiBjYWNoZWRJbWFnZSgpID8gaW50cmluc2lj
SGVpZ2h0KCkgOiAwOworCisgICAgY2FsY1dpZHRoKCk7CisgICAgY2FsY0hlaWdodCgpOworCisg
ICAgbV9hYnNvbHV0ZUJvdW5kcyA9IGdldEFic29sdXRlUmVwYWludFJlY3QoKTsKKworICAgIGlm
IChjaGVja0ZvclJlcGFpbnQpCisgICAgICAgIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKG9s
ZEJvdW5kcywgb2xkQm91bmRzKTsKKyAgICAKKyAgICBzZXROZWVkc0xheW91dChmYWxzZSk7Cit9
CisKIEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVsYXRpdmVCQm94KGJvb2wgaW5jbHVkZVN0
cm9rZSkgY29uc3QKIHsKLSAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIHdpZHRoKCksIGhlaWdo
dCgpKTsKKyAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VF
bGVtZW50ICo+KG5vZGUoKSk7CisgICAgZmxvYXQgeE9mZnNldCA9IGltYWdlLT54KCktPmJhc2VW
YWwoKSA/IGltYWdlLT54KCktPmJhc2VWYWwoKS0+dmFsdWUoKSA6IDA7CisgICAgZmxvYXQgeU9m
ZnNldCA9IGltYWdlLT55KCktPmJhc2VWYWwoKSA/IGltYWdlLT55KCktPmJhc2VWYWwoKS0+dmFs
dWUoKSA6IDA7CisgICAgcmV0dXJuIEZsb2F0UmVjdCh4T2Zmc2V0LCB5T2Zmc2V0LCB3aWR0aCgp
LCBoZWlnaHQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChDYWNo
ZWRJbWFnZSogaW1hZ2UpCkBAIC0yMjAsMTMgKzI3OCwxOSBAQCB2b2lkIFJlbmRlclNWR0ltYWdl
OjphYnNvbHV0ZVJlY3RzKERlcHJlCiAgICAgcmVjdHMuYXBwZW5kKGdldEFic29sdXRlUmVwYWlu
dFJlY3QoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0ZUZvckF0dHJpYnV0
ZXMoKQorCitRTWF0cml4IFJlbmRlclNWR0ltYWdlOjp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMo
KQogewotICAgIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gcmVuZGVyaW5nRGV2
aWNlKCktPmN1cnJlbnRDb250ZXh0KCk7CiAgICAgU1ZHSW1hZ2VFbGVtZW50ICppbWFnZSA9IHN0
YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCAqPihub2RlKCkpOwogICAgIGZsb2F0IHhPZmZzZXQg
PSBpbWFnZS0+eCgpLT5iYXNlVmFsKCkgPyBpbWFnZS0+eCgpLT5iYXNlVmFsKCktPnZhbHVlKCkg
OiAwOwogICAgIGZsb2F0IHlPZmZzZXQgPSBpbWFnZS0+eSgpLT5iYXNlVmFsKCkgPyBpbWFnZS0+
eSgpLT5iYXNlVmFsKCktPnZhbHVlKCkgOiAwOwotICAgIGNvbnRleHQtPmNvbmNhdENUTShRTWF0
cml4KCkudHJhbnNsYXRlKHhPZmZzZXQsIHlPZmZzZXQpKTsKKyAgICByZXR1cm4gUU1hdHJpeCgp
LnRyYW5zbGF0ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKK30KKwordm9pZCBSZW5kZXJTVkdJbWFnZTo6
dHJhbnNsYXRlRm9yQXR0cmlidXRlcygpCit7CisgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHQg
KmNvbnRleHQgPSByZW5kZXJpbmdEZXZpY2UoKS0+Y3VycmVudENvbnRleHQoKTsKKyAgICBjb250
ZXh0LT5jb25jYXRDVE0odHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkpOwogfQogCiB9CkluZGV4
OiBrY2FudmFzL1JlbmRlclNWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9SZW5kZXJT
VkdJbWFnZS5oCShyZXZpc2lvbiAxNDg5NSkKKysrIGtjYW52YXMvUmVuZGVyU1ZHSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAg
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSopOwogICAgICAgICB2b2lk
IGFkanVzdFJlY3RzRm9yQXNwZWN0UmF0aW8oRmxvYXRSZWN0JiBkZXN0UmVjdCwgRmxvYXRSZWN0
JiBzcmNSZWN0LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvICphc3BlY3RSYXRpbyk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgsIGlu
dCBwYXJlbnRZKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworCisgICAgICAgIGJv
b2wgcmVxdWlyZXNMYXllcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1
dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpOworCisgICAgICAgIHZpcnR1YWwgYm9v
bCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCBfeCwgaW50
IF95LCBpbnQgX3R4LCBpbnQgX3R5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pOworCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB0cmFuc2xhdGVGb3JBdHRyaWJ1dGVzKCk7CisgICAg
ICAgIFFNYXRyaXggdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCk7CiAgICAgICAgIFFNYXRyaXgg
bV90cmFuc2Zvcm07CisgICAgICAgIEludFJlY3QgbV9hYnNvbHV0ZUJvdW5kczsKICAgICB9Owog
fQogCkluZGV4OiBrY2FudmFzL1JlbmRlclNWR1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52
YXMvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9SZW5kZXJT
VkdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOSArOTEsMTQgQEAgdm9pZCBSZW5kZXJT
VkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaQogICAgIGlmIChmaWx0ZXIpCiAgICAgICAgIGZp
bHRlci0+cHJlcGFyZUZpbHRlcihib3VuZGluZ0JveCk7CiAgICAgICAgIAorICAgIGZsb2F0IG9w
YWNpdHkgPSBzdHlsZSgpLT5vcGFjaXR5KCk7CisgICAgaWYgKG9wYWNpdHkgPCAxLjBmKQorICAg
ICAgICBwYWludEluZm8ucC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKwogICAg
IE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGMoZGV2aWNlLT5jdXJyZW50Q29udGV4dCgpLT5jcmVh
dGVHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgUGFpbnRJbmZvIHBpID0gcGFpbnRJbmZvOwogICAg
IHBpLnAgPSBjLmdldCgpOworICAgIHBpLnIgPSAodHJhbnNsYXRpb25Ub3BUb0Jhc2VsaW5lKCkg
KiB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKSAqIGFic29sdXRlVHJhbnNmb3JtKCkpLmludmVy
dCgpLm1hcFJlY3QocGFpbnRJbmZvLnIpOwogCiAgICAgS1JlbmRlcmluZ1BhaW50U2VydmVyICpm
aWxsUGFpbnRTZXJ2ZXIgPSBLU1ZHUGFpbnRlckZhY3Rvcnk6OmZpbGxQYWludFNlcnZlcihzdHls
ZSgpLCB0aGlzKTsKICAgICBpZiAoZmlsbFBhaW50U2VydmVyKSB7CkBAIC0xMjAsNiArMTI1LDkg
QEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaQogICAgIGlmIChmaWx0
ZXIpCiAgICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIoYm91bmRpbmdCb3gpOwogCisgICAgaWYg
KG9wYWNpdHkgPCAxLjBmKQorICAgICAgICBwYWludEluZm8ucC0+ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKKwogICAgIC8vIHJlc3RvcmUgZHJhd2luZyBzdGF0ZQogICAgIGlmICghc2hvdWxkUG9w
Q29udGV4dCkKICAgICAgICAgcGFpbnRJbmZvLnAtPnJlc3RvcmUoKTsKQEAgLTEyOSw2ICsxMzcs
NDAgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaQogICAgIH0KIH0K
IAordm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0
JiByLCBib29sIGYpCit7CisgICAgUU1hdHJpeCB0cmFuc2Zvcm0gPSB0cmFuc2xhdGlvblRvcFRv
QmFzZWxpbmUoKSAqIHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpICogYWJzb2x1dGVUcmFuc2Zv
cm0oKTsKKyAgICByID0gdHJhbnNmb3JtLm1hcFJlY3Qocik7CisgICAgCisgICAgUmVuZGVyQ29u
dGFpbmVyOjpjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChyLCBmKTsKK30KKworYm9vbCBSZW5k
ZXJTVkdUZXh0OjpyZXF1aXJlc0xheWVyKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgUmVuZGVyU1ZHVGV4dDo6bGF5b3V0KCkKK3sKKyAgICBLSFRNTEFzc2VydChuZWVkc0xheW91
dCgpKTsKKyAgICBLSFRNTEFzc2VydChtaW5NYXhLbm93bigpKTsKKworICAgIEludFJlY3Qgb2xk
Qm91bmRzOworICAgIGJvb2wgY2hlY2tGb3JSZXBhaW50ID0gY2hlY2tGb3JSZXBhaW50RHVyaW5n
TGF5b3V0KCk7CisgICAgaWYgKGNoZWNrRm9yUmVwYWludCkKKyAgICAgICAgb2xkQm91bmRzID0g
bV9hYnNvbHV0ZUJvdW5kczsKKworICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKworICAgIG1f
YWJzb2x1dGVCb3VuZHMgPSBnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCk7CisKKyAgICBib29sIHJl
cGFpbnRlZCA9IGZhbHNlOworICAgIGlmIChjaGVja0ZvclJlcGFpbnQpCisgICAgICAgIHJlcGFp
bnRlZCA9IHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKG9sZEJvdW5kcywgb2xkQm91bmRzKTsK
KyAgICAKKyAgICBzZXROZWVkc0xheW91dChmYWxzZSk7Cit9CisKIGJvb2wgUmVuZGVyU1ZHVGV4
dDo6bm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCBfeCwgaW50IF95LCBpbnQgX3R4LCBp
bnQgX3R5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7CiAgICAgUU1hdHJpeCB0b3Rh
bFRyYW5zZm9ybSA9IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpOwpJbmRleDoga2NhbnZhcy9S
ZW5kZXJTVkdUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9SZW5kZXJTVkdUZXh0LmgJKHJl
dmlzaW9uIDE0ODk1KQorKysga2NhbnZhcy9SZW5kZXJTVkdUZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDIwICszNiwyNSBAQCBjbGFzcyBSZW5kZXJTVkdUZXh0IDogcHVibGljIFJlbmRlckJs
b2NrCiBwdWJsaWM6CiAgICAgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCAqbm9kZSk7CiAK
LSAgICBjb25zdCBjaGFyICpyZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNWR1Rl
eHQiOyB9Ci0gICAgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgcGFyZW50WCwgaW50IHBhcmVu
dFkpOworICAgIHZpcnR1YWwgY29uc3QgY2hhciAqcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJTVkdUZXh0IjsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBp
bnQgcGFyZW50WCwgaW50IHBhcmVudFkpOwogICAgIAogICAgIHZpcnR1YWwgUU1hdHJpeCBsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldExvY2FsVHJhbnNmb3JtKGNvbnN0IFFNYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5z
Zm9ybSA9IHRyYW5zZm9ybTsgfQogICAgIAotICAgIGJvb2wgbm9kZUF0UG9pbnQoTm9kZUluZm8m
LCBpbnQgX3gsIGludCBfeSwgaW50IF90eCwgaW50IF90eSwgV2ViQ29yZTo6SGl0VGVzdEFjdGlv
bik7CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KE5vZGVJbmZvJiwgaW50IF94LCBpbnQg
X3ksIGludCBfdHgsIGludCBfdHksIFdlYkNvcmU6OkhpdFRlc3RBY3Rpb24pOwogCiAgICAgdmly
dHVhbCB2b2lkIGFic29sdXRlUmVjdHMoRGVwcmVjYXRlZFZhbHVlTGlzdDxJbnRSZWN0PiYgcmVj
dHMsIGludCB0eCwgaW50IHR5KTsKIAorICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1dGVS
ZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJl
c0xheWVyKCk7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAgIAogIHByaXZhdGU6CiAg
ICAgUU1hdHJpeCB0cmFuc2xhdGlvblRvcFRvQmFzZWxpbmUoKTsKICAgICBRTWF0cml4IHRyYW5z
bGF0aW9uRm9yQXR0cmlidXRlcygpOwogICAgIFFNYXRyaXggbV90cmFuc2Zvcm07CisgICAgSW50
UmVjdCBtX2Fic29sdXRlQm91bmRzOwogfTsKIAogfQpJbmRleDogbWFudWFsLXRlc3RzL3N2Zy1h
bmltYXRlZC1naWZzLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtYW51YWwtdGVzdHMvc3ZnLWFuaW1hdGVk
LWdpZnMuc3ZnCShyZXZpc2lvbiAwKQorKysgbWFudWFsLXRlc3RzL3N2Zy1hbmltYXRlZC1naWZz
LnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciCisgICAgICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hsaW5rIgorICAgICAgICB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+CisgICAgICAgIAorICAgICAgICA8dGV4dCB4PSIwIiB5PSIxNSI+VGhlcmUgc2hv
dWxkIGJlIG9ubHkgb25lIGFuaW1hdGVkIGltYWdlIGhlcmUsIHJvdGF0ZWQsIGFuZCBub3QgY2xp
cHBlZDo8L3RleHQ+CisgICAgICAgIDxnIHRyYW5zZm9ybT0icm90YXRlKDQ1LDEwMCwyNTApIiA+
CisgICAgICAgICAgICA8cmVjdCBmaWxsPSJ5ZWxsb3ciIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tl
LXdpZHRoPSIyIiB4PSI2MCIgeT0iNjAiIHdpZHRoPSIxNzAiIGhlaWdodD0iMTcwIiAvPgorICAg
ICAgICAgICAgICAgIDxmb3JlaWduT2JqZWN0IHg9IjcwIiB5PSI3MCIgd2lkdGg9IjE1MCIgaGVp
Z2h0PSIxNTAiID4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx4aHRtbDppbWcgc3JjPSJyZXNv
dXJjZXMvM2RvbHBoLmdpZiIgd2lkdGg9IjE1MCIgaGVpZ2h0PSIxNTAiIC8+CisgICAgICAgICAg
ICAgICAgPC9mb3JlaWduT2JqZWN0PgorICAgICAgICA8L2c+CisgICAgICAgIDx0ZXh0IHg9IjAi
IHk9IjQwMCI+VGhlIGFuaW1hdGVkIGltYWdlIGJlbG93IHNob3VsZCBsb29rIGxpa2UgdGhlIG9u
ZSBhYm92ZTo8L3RleHQ+CisgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsIDQwMCkg
cm90YXRlKDQ1LDEwMCwyNTApIiA+CisgICAgICAgICAgICA8cmVjdCBmaWxsPSJ5ZWxsb3ciIHN0
cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiB4PSI2MCIgeT0iNjAiIHdpZHRoPSIxNzAi
IGhlaWdodD0iMTcwIiAvPgorICAgICAgICAgICAgPGltYWdlIHhsaW5rOmhyZWY9InJlc291cmNl
cy8zZG9scGguZ2lmIiB4PSI2MCIgeT0iNjAiIHdpZHRoPSIxNzAiIGhlaWdodD0iMTcwIiAvPgor
ICAgICAgICA8L2c+Cis8L3N2Zz4KSW5kZXg6IG1hbnVhbC10ZXN0cy9zdmctcmVwYWludC1mb3Jl
aWduT2JqZWN0LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtYW51YWwtdGVzdHMvc3ZnLXJlcGFpbnQtZm9y
ZWlnbk9iamVjdC5zdmcJKHJldmlzaW9uIDApCisrKyBtYW51YWwtdGVzdHMvc3ZnLXJlcGFpbnQt
Zm9yZWlnbk9iamVjdC5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKzxzdmcgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgorICAgICAgICB4bWxuczp4bGluaz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKKyAgICAgICAgeG1sbnM6eGh0bWw9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgICAgICAKKzxzY3JpcHQ+Cis8IVtDREFUQVsKK3Zh
ciBzdGF0ZUluZGV4ID0gMDsKK3ZhciBjdXJyZW50VGFyZ2V0ID0gMDsKKworZnVuY3Rpb24gc3Rh
dGVBKCkgCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkEiKS50ZXh0Q29udGVudCA9
ICd8QXwnOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCIikudGV4dENvbnRlbnQgPSAn
Qic7CisKKyAgICBjdXJyZW50VGFyZ2V0ID0gMDsKKyAgICBzdGFydEFuaW1hdGlvbigpOworfQor
CitmdW5jdGlvbiBzdGF0ZUIoKSAKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQSIp
LnRleHRDb250ZW50ID0gJ0EnOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCIikudGV4
dENvbnRlbnQgPSAnfEJ8JzsKKyAgICBjdXJyZW50VGFyZ2V0ID0gMTsKKyAgICBzdGFydEFuaW1h
dGlvbigpOworfQorCit2YXIgaW50ZXJ2YWxJZCA9IG51bGw7CisKK2Z1bmN0aW9uIHN0YXJ0QW5p
bWF0aW9uKCkgeworICAgIGlmIChpbnRlcnZhbElkID09IG51bGwpIHsKKwlpbnRlcnZhbElkID0g
c2V0SW50ZXJ2YWwoYW5pbWF0aW9uU3RlcCwgMjApOworICAgIH0KK30KKworZnVuY3Rpb24gYW5p
bWF0aW9uU3RlcCgpIHsKKyAgICBpZiAoTWF0aC5hYnMoc3RhdGVJbmRleCAtIGN1cnJlbnRUYXJn
ZXQpIDwgLjAwMSkgeworCWNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisJaW50ZXJ2YWxJZCA9
IG51bGw7CisJcmV0dXJuOworICAgIH0KKworICAgIGlmIChzdGF0ZUluZGV4IDwgY3VycmVudFRh
cmdldCkgeworCXN0YXRlSW5kZXggKz0gMSAvIDEyODsKKyAgICB9IGVsc2UgeworCXN0YXRlSW5k
ZXggLT0gMSAvIDEyODsKKyAgICB9CisKKyAgICB2YXIgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldEdyb3VwIik7CisKKyAgICB2YXIgdHJhbnNmb3JtID0gInRyYW5zbGF0ZSgi
ICsgKDEwMCAqIHN0YXRlSW5kZXgpICsgIiwiICsgKDEwMCAqIHN0YXRlSW5kZXgpICsgIikgcm90
YXRlKCIgKyAoNDA1ICogc3RhdGVJbmRleCkgKyAiLDEwMCwyNTApIHNjYWxlKCIgKyAoMSArICBz
dGF0ZUluZGV4KSAgKyAiKSIgOworICAgIHZhciBvcGFjaXR5ID0gMSAtIC43NSAqIHN0YXRlSW5k
ZXg7CisKKyAgICBlbHQuc2V0QXR0cmlidXRlKCJvcGFjaXR5Iiwgb3BhY2l0eSk7CisgICAgZWx0
LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworCitdXT4KKzwvc2Ny
aXB0PgorCisgICAgICAgIDx0ZXh0IGlkPSJBIiB4PSIwIiB5PSIzMiIgZmlsbD0icmVkIiBmb250
LXNpemU9IjMyIiBvbmNsaWNrPSJzdGF0ZUEoKSI+fEF8PC90ZXh0PgorICAgICAgICA8dGV4dCBp
ZD0iQiIgeD0iNjAiIHk9IjMyIiBmaWxsPSJibHVlIiBmb250LXNpemU9IjMyIiBvbmNsaWNrPSJz
dGF0ZUIoKSI+QjwvdGV4dD4KKyAgICAgICAgPHRleHQgeD0iMCIgeT0iNjQyIiBmaWxsPSJibGFj
ayIgZm9udC1zaXplPSIzMiI+Q2xpY2sgQiBhbmQgdGhlbiBBIGFib3ZlLjwvdGV4dD4KKyAgICAg
ICAgPHRleHQgeD0iMCIgeT0iNjc0IiBmaWxsPSJibGFjayIgZm9udC1zaXplPSIzMiI+VGhlIGFu
aW1hdGlvbiBzaG91bGQgaGF2ZSBubyB0cmFpbHMgb3IgY2xpcHBpbmcuPC90ZXh0PgorCisJPGNp
cmNsZSBmaWxsPSJwaW5rIiBjeD0iMzAwIiBjeT0iMzAwIiBzdHJva2U9ImxpZ2h0Ymx1ZSIgc3Ry
b2tlLXdpZHRoPSI0MCIgcj0iMzAwIiAvPgorCisgICAgICAgIDxnPgorICAgICAgICAgICAgPHJl
Y3QgZmlsbD0ieWVsbG93IiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMiIgeD0iNjAi
IHk9IjYwIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjE3MCIgLz4KKworCSAgICAgICAgPGZvcmVpZ25P
YmplY3QgIGlkPSJ0YXJnZXRHcm91cCIgeD0iNjAiIHk9IjYwIiB3aWR0aD0iMTcwIiBoZWlnaHQ9
IjE3MCIgPgorCSAgICAgICAgICAgIDx4aHRtbDp4aHRtbD4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIDx4aHRtbDppbWcgc3JjPSJodHRwOi8vd3d3LmNpdGlsaW5rLmNvbS9+Z3JpenpseS9hbmln
aWZzLzNkb2xwaC5naWYiIHdpZHRoPSIxNzAiIGhlaWdodD0iMTcwIiAvPjxiciAvPgorCSAgICAg
ICAgICAgIDwveGh0bWw6eGh0bWw+CisgICAgICAgICAgICAgICAgPC9mb3JlaWduT2JqZWN0Pgor
ICAgICAgICA8L2c+CisKKworPC9zdmc+CisKKwpJbmRleDogbWFudWFsLXRlc3RzL3N2Zy1yZXBh
aW50LWdyb3VwLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtYW51YWwtdGVzdHMvc3ZnLXJlcGFpbnQtZ3Jv
dXAuc3ZnCShyZXZpc2lvbiAwKQorKysgbWFudWFsLXRlc3RzL3N2Zy1yZXBhaW50LWdyb3VwLnN2
ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciCisgICAgICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8x
OTk5L3hsaW5rIgorICAgICAgICB4bWxuczp4aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+CisgICAgICAgIAorPHNjcmlwdD4KKzwhW0NEQVRBWwordmFyIHN0YXRlSW5kZXggPSAw
OwordmFyIGN1cnJlbnRUYXJnZXQgPSAwOworCitmdW5jdGlvbiBzdGF0ZUEoKSAKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQSIpLnRleHRDb250ZW50ID0gJ3xBfCc7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkIiKS50ZXh0Q29udGVudCA9ICdCJzsKKworICAgIGN1cnJl
bnRUYXJnZXQgPSAwOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIHN0YXRl
QigpIAoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJBIikudGV4dENvbnRlbnQgPSAn
QSc7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkIiKS50ZXh0Q29udGVudCA9ICd8Qnwn
OworICAgIGN1cnJlbnRUYXJnZXQgPSAxOworICAgIHN0YXJ0QW5pbWF0aW9uKCk7Cit9CisKK3Zh
ciBpbnRlcnZhbElkID0gbnVsbDsKKworZnVuY3Rpb24gc3RhcnRBbmltYXRpb24oKSB7CisgICAg
aWYgKGludGVydmFsSWQgPT0gbnVsbCkgeworCWludGVydmFsSWQgPSBzZXRJbnRlcnZhbChhbmlt
YXRpb25TdGVwLCAyMCk7CisgICAgfQorfQorCitmdW5jdGlvbiBhbmltYXRpb25TdGVwKCkgewor
ICAgIGlmIChNYXRoLmFicyhzdGF0ZUluZGV4IC0gY3VycmVudFRhcmdldCkgPCAuMDAxKSB7CisJ
Y2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsKKwlpbnRlcnZhbElkID0gbnVsbDsKKwlyZXR1cm47
CisgICAgfQorCisgICAgaWYgKHN0YXRlSW5kZXggPCBjdXJyZW50VGFyZ2V0KSB7CisJc3RhdGVJ
bmRleCArPSAxIC8gMTI4OworICAgIH0gZWxzZSB7CisJc3RhdGVJbmRleCAtPSAxIC8gMTI4Owor
ICAgIH0KKworICAgIHZhciBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0R3Jv
dXAiKTsKKworICAgIHZhciB0cmFuc2Zvcm0gPSAidHJhbnNsYXRlKCIgKyAoMTAwICogc3RhdGVJ
bmRleCkgKyAiLCIgKyAoMTAwICogc3RhdGVJbmRleCkgKyAiKSByb3RhdGUoIiArICg0MDUgKiBz
dGF0ZUluZGV4KSArICIsMTAwLDI1MCkgc2NhbGUoIiArICgxICsgIHN0YXRlSW5kZXgpICArICIp
IiA7CisgICAgdmFyIG9wYWNpdHkgPSAxIC0gLjc1ICogc3RhdGVJbmRleDsKKworICAgIGVsdC5z
ZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLCBvcGFjaXR5KTsKKyAgICBlbHQuc2V0QXR0cmlidXRlKCJ0
cmFuc2Zvcm0iLCB0cmFuc2Zvcm0pOworfQorCisKK11dPgorPC9zY3JpcHQ+CisKKyAgICAgICAg
PHRleHQgaWQ9IkEiIHg9IjAiIHk9IjMyIiBmaWxsPSJyZWQiIGZvbnQtc2l6ZT0iMzIiIG9uY2xp
Y2s9InN0YXRlQSgpIj58QXw8L3RleHQ+CisgICAgICAgIDx0ZXh0IGlkPSJCIiB4PSI2MCIgeT0i
MzIiIGZpbGw9ImJsdWUiIGZvbnQtc2l6ZT0iMzIiIG9uY2xpY2s9InN0YXRlQigpIj5CPC90ZXh0
PgorICAgICAgICA8dGV4dCB4PSIwIiB5PSI2NDIiIGZpbGw9ImJsYWNrIiBmb250LXNpemU9IjMy
Ij5DbGljayBCIGFuZCB0aGVuIEEgYWJvdmUuPC90ZXh0PgorICAgICAgICA8dGV4dCB4PSIwIiB5
PSI2NzQiIGZpbGw9ImJsYWNrIiBmb250LXNpemU9IjMyIj5UaGUgYW5pbWF0aW9uIHNob3VsZCBo
YXZlIG5vIHRyYWlscyBvciBjbGlwcGluZy48L3RleHQ+CisKKwk8Y2lyY2xlIGZpbGw9InBpbmsi
IGN4PSIzMDAiIGN5PSIzMDAiIHN0cm9rZT0ibGlnaHRibHVlIiBzdHJva2Utd2lkdGg9IjQwIiBy
PSIzMDAiIC8+CisKKyAgICAgICAgPGcgaWQ9InRhcmdldEdyb3VwIj4KKyAgICAgICAgICAgIDxy
ZWN0IGZpbGw9InllbGxvdyIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2Utd2lkdGg9IjIiIHg9IjYw
IiB5PSI2MCIgd2lkdGg9IjE3MCIgaGVpZ2h0PSIxNzAiIC8+CisKKwkgICAgICAgIDxmb3JlaWdu
T2JqZWN0IHg9IjYwIiB5PSI2MCIgd2lkdGg9IjE3MCIgaGVpZ2h0PSIxNzAiID4KKwkgICAgICAg
ICAgICA8eGh0bWw6eGh0bWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8eGh0bWw6aW1nIHNy
Yz0iaHR0cDovL3d3dy5jaXRpbGluay5jb20vfmdyaXp6bHkvYW5pZ2lmcy8zZG9scGguZ2lmIiB3
aWR0aD0iMTcwIiBoZWlnaHQ9IjE3MCIgLz48YnIgLz4KKwkgICAgICAgICAgICA8L3hodG1sOnho
dG1sPgorICAgICAgICAgICAgICAgIDwvZm9yZWlnbk9iamVjdD4KKyAgICAgICAgPC9nPgorCisK
Kzwvc3ZnPgorCisKSW5kZXg6IG1hbnVhbC10ZXN0cy9zdmctcmVwYWludC1pbWFnZS5zdmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbWFudWFsLXRlc3RzL3N2Zy1yZXBhaW50LWltYWdlLnN2ZwkocmV2aXNpb24g
MCkKKysrIG1hbnVhbC10ZXN0cy9zdmctcmVwYWludC1pbWFnZS5zdmcJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzcgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgor
ICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKKyAgICAg
ICAgeG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgICAgICAK
KzxzY3JpcHQ+Cis8IVtDREFUQVsKK3ZhciBzdGF0ZUluZGV4ID0gMDsKK3ZhciBjdXJyZW50VGFy
Z2V0ID0gMDsKKworZnVuY3Rpb24gc3RhdGVBKCkgCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIkEiKS50ZXh0Q29udGVudCA9ICd8QXwnOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJCIikudGV4dENvbnRlbnQgPSAnQic7CisKKyAgICBjdXJyZW50VGFyZ2V0ID0gMDsKKyAg
ICBzdGFydEFuaW1hdGlvbigpOworfQorCitmdW5jdGlvbiBzdGF0ZUIoKSAKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiQSIpLnRleHRDb250ZW50ID0gJ0EnOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJCIikudGV4dENvbnRlbnQgPSAnfEJ8JzsKKyAgICBjdXJyZW50VGFy
Z2V0ID0gMTsKKyAgICBzdGFydEFuaW1hdGlvbigpOworfQorCit2YXIgaW50ZXJ2YWxJZCA9IG51
bGw7CisKK2Z1bmN0aW9uIHN0YXJ0QW5pbWF0aW9uKCkgeworICAgIGlmIChpbnRlcnZhbElkID09
IG51bGwpIHsKKwlpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoYW5pbWF0aW9uU3RlcCwgMjApOwor
ICAgIH0KK30KKworZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCgpIHsKKyAgICBpZiAoTWF0aC5hYnMo
c3RhdGVJbmRleCAtIGN1cnJlbnRUYXJnZXQpIDwgLjAwMSkgeworCWNsZWFySW50ZXJ2YWwoaW50
ZXJ2YWxJZCk7CisJaW50ZXJ2YWxJZCA9IG51bGw7CisJcmV0dXJuOworICAgIH0KKworICAgIGlm
IChzdGF0ZUluZGV4IDwgY3VycmVudFRhcmdldCkgeworCXN0YXRlSW5kZXggKz0gMSAvIDEyODsK
KyAgICB9IGVsc2UgeworCXN0YXRlSW5kZXggLT0gMSAvIDEyODsKKyAgICB9CisKKyAgICB2YXIg
ZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldEdyb3VwIik7CisKKyAgICB2YXIg
dHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgKDEwMCAqIHN0YXRlSW5kZXgpICsgIiwiICsgKDEw
MCAqIHN0YXRlSW5kZXgpICsgIikgcm90YXRlKCIgKyAoNDA1ICogc3RhdGVJbmRleCkgKyAiLDEw
MCwyNTApIHNjYWxlKCIgKyAoMSArICBzdGF0ZUluZGV4KSAgKyAiKSIgOworICAgIHZhciBvcGFj
aXR5ID0gMSAtIC43NSAqIHN0YXRlSW5kZXg7CisKKyAgICBlbHQuc2V0QXR0cmlidXRlKCJvcGFj
aXR5Iiwgb3BhY2l0eSk7CisgICAgZWx0LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgdHJhbnNm
b3JtKTsKK30KKworCitdXT4KKzwvc2NyaXB0PgorCisgICAgICAgIDx0ZXh0IGlkPSJBIiB4PSIw
IiB5PSIzMiIgZmlsbD0icmVkIiBmb250LXNpemU9IjMyIiBvbmNsaWNrPSJzdGF0ZUEoKSI+fEF8
PC90ZXh0PgorICAgICAgICA8dGV4dCBpZD0iQiIgeD0iNjAiIHk9IjMyIiBmaWxsPSJibHVlIiBm
b250LXNpemU9IjMyIiBvbmNsaWNrPSJzdGF0ZUIoKSI+QjwvdGV4dD4KKyAgICAgICAgPHRleHQg
eD0iMCIgeT0iNjQyIiBmaWxsPSJibGFjayIgZm9udC1zaXplPSIzMiI+Q2xpY2sgQiBhbmQgdGhl
biBBIGFib3ZlLjwvdGV4dD4KKyAgICAgICAgPHRleHQgeD0iMCIgeT0iNjc0IiBmaWxsPSJibGFj
ayIgZm9udC1zaXplPSIzMiI+VGhlIGFuaW1hdGlvbiBzaG91bGQgaGF2ZSBubyB0cmFpbHMgb3Ig
Y2xpcHBpbmcuPC90ZXh0PgorCisJPGNpcmNsZSBmaWxsPSJwaW5rIiBjeD0iMzAwIiBjeT0iMzAw
IiBzdHJva2U9ImxpZ2h0Ymx1ZSIgc3Ryb2tlLXdpZHRoPSI0MCIgcj0iMzAwIiAvPgorCisgICAg
ICAgIDxnPgorICAgICAgICAgICAgPHJlY3QgZmlsbD0ieWVsbG93IiBzdHJva2U9IiMwMDAwMDAi
IHN0cm9rZS13aWR0aD0iMiIgeD0iNjAiIHk9IjYwIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjE3MCIg
Lz4KKworCSAgICAgICAgPGltYWdlICBpZD0idGFyZ2V0R3JvdXAiIHg9IjYwIiB5PSI2MCIgd2lk
dGg9IjE3MCIgaGVpZ2h0PSIxNzAiIHhsaW5rOmhyZWY9InJlc291cmNlcy8zZG9scGguZ2lmIiAg
Lz4KKyAgICAgICAgPC9nPgorCisKKzwvc3ZnPgorCisKSW5kZXg6IG1hbnVhbC10ZXN0cy9zdmct
cmVwYWludC1wYXRoLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtYW51YWwtdGVzdHMvc3ZnLXJlcGFpbnQt
cGF0aC5zdmcJKHJldmlzaW9uIDApCisrKyBtYW51YWwtdGVzdHMvc3ZnLXJlcGFpbnQtcGF0aC5z
dmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIgorICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcv
MTk5OS94bGluayIKKyAgICAgICAgeG1sbnM6eGh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwiPgorICAgICAgICAKKzxzY3JpcHQ+Cis8IVtDREFUQVsKK3ZhciBzdGF0ZUluZGV4ID0g
MDsKK3ZhciBjdXJyZW50VGFyZ2V0ID0gMDsKKworZnVuY3Rpb24gc3RhdGVBKCkgCit7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkEiKS50ZXh0Q29udGVudCA9ICd8QXwnOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJCIikudGV4dENvbnRlbnQgPSAnQic7CisKKyAgICBjdXJy
ZW50VGFyZ2V0ID0gMDsKKyAgICBzdGFydEFuaW1hdGlvbigpOworfQorCitmdW5jdGlvbiBzdGF0
ZUIoKSAKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQSIpLnRleHRDb250ZW50ID0g
J0EnOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCIikudGV4dENvbnRlbnQgPSAnfEJ8
JzsKKyAgICBjdXJyZW50VGFyZ2V0ID0gMTsKKyAgICBzdGFydEFuaW1hdGlvbigpOworfQorCit2
YXIgaW50ZXJ2YWxJZCA9IG51bGw7CisKK2Z1bmN0aW9uIHN0YXJ0QW5pbWF0aW9uKCkgeworICAg
IGlmIChpbnRlcnZhbElkID09IG51bGwpIHsKKwlpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoYW5p
bWF0aW9uU3RlcCwgMjApOworICAgIH0KK30KKworZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCgpIHsK
KyAgICBpZiAoTWF0aC5hYnMoc3RhdGVJbmRleCAtIGN1cnJlbnRUYXJnZXQpIDwgLjAwMSkgewor
CWNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisJaW50ZXJ2YWxJZCA9IG51bGw7CisJcmV0dXJu
OworICAgIH0KKworICAgIGlmIChzdGF0ZUluZGV4IDwgY3VycmVudFRhcmdldCkgeworCXN0YXRl
SW5kZXggKz0gMSAvIDEyODsKKyAgICB9IGVsc2UgeworCXN0YXRlSW5kZXggLT0gMSAvIDEyODsK
KyAgICB9CisKKyAgICB2YXIgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldEdy
b3VwIik7CisKKyAgICB2YXIgdHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsgKDEwMCAqIHN0YXRl
SW5kZXgpICsgIiwiICsgKDEwMCAqIHN0YXRlSW5kZXgpICsgIikgcm90YXRlKCIgKyAoNDA1ICog
c3RhdGVJbmRleCkgKyAiLDEwMCwyNTApIHNjYWxlKCIgKyAoMSArICBzdGF0ZUluZGV4KSAgKyAi
KSIgOworICAgIHZhciBvcGFjaXR5ID0gMSAtIC43NSAqIHN0YXRlSW5kZXg7CisKKyAgICBlbHQu
c2V0QXR0cmlidXRlKCJvcGFjaXR5Iiwgb3BhY2l0eSk7CisgICAgZWx0LnNldEF0dHJpYnV0ZSgi
dHJhbnNmb3JtIiwgdHJhbnNmb3JtKTsKK30KKworCitdXT4KKzwvc2NyaXB0PgorCisgICAgICAg
IDx0ZXh0IGlkPSJBIiB4PSIwIiB5PSIzMiIgZmlsbD0icmVkIiBmb250LXNpemU9IjMyIiBvbmNs
aWNrPSJzdGF0ZUEoKSI+fEF8PC90ZXh0PgorICAgICAgICA8dGV4dCBpZD0iQiIgeD0iNjAiIHk9
IjMyIiBmaWxsPSJibHVlIiBmb250LXNpemU9IjMyIiBvbmNsaWNrPSJzdGF0ZUIoKSI+QjwvdGV4
dD4KKyAgICAgICAgPHRleHQgeD0iMCIgeT0iNjQyIiBmaWxsPSJibGFjayIgZm9udC1zaXplPSIz
MiI+Q2xpY2sgQiBhbmQgdGhlbiBBIGFib3ZlLjwvdGV4dD4KKyAgICAgICAgPHRleHQgeD0iMCIg
eT0iNjc0IiBmaWxsPSJibGFjayIgZm9udC1zaXplPSIzMiI+VGhlIGFuaW1hdGlvbiBzaG91bGQg
aGF2ZSBubyB0cmFpbHMgb3IgY2xpcHBpbmcuPC90ZXh0PgorCisJPGNpcmNsZSBmaWxsPSJwaW5r
IiBjeD0iMzAwIiBjeT0iMzAwIiBzdHJva2U9ImxpZ2h0Ymx1ZSIgc3Ryb2tlLXdpZHRoPSI0MCIg
cj0iMzAwIiAvPgorCisgICAgICAgIDxnPgorICAgICAgICAgICAgPHJlY3QgaWQ9InRhcmdldEdy
b3VwIiBmaWxsPSJ5ZWxsb3ciIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiB4PSI2
MCIgeT0iNjAiIHdpZHRoPSIxNzAiIGhlaWdodD0iMTcwIiAvPgorCisJICAgICAgICA8aW1hZ2Ug
eD0iNjAiIHk9IjYwIiB3aWR0aD0iMTcwIiBoZWlnaHQ9IjE3MCIgeGxpbms6aHJlZj0icmVzb3Vy
Y2VzLzNkb2xwaC5naWYiICAvPgorICAgICAgICA8L2c+CisKKworPC9zdmc+CisKKwpJbmRleDog
cGxhdGZvcm0vY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMTQ4OTUpCisrKyBwbGF0Zm9ybS9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiwxOSArNjM2LDI3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoY29uc3QgRmwKIAogRmxvYXRSZWN0
IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiB7Ci0gICAgQ0dSZWN0IGRldmljZVJlY3QgPSBDR0NvbnRleHRDb252ZXJ0UmVjdFRvRGV2
aWNlU3BhY2UocGxhdGZvcm1Db250ZXh0KCksIHJlY3QpOwotICAgIGRldmljZVJlY3Qub3JpZ2lu
LnggPSByb3VuZGYoZGV2aWNlUmVjdC5vcmlnaW4ueCk7Ci0gICAgZGV2aWNlUmVjdC5vcmlnaW4u
eSA9IHJvdW5kZihkZXZpY2VSZWN0Lm9yaWdpbi55KTsKLSAgICBkZXZpY2VSZWN0LnNpemUud2lk
dGggPSByb3VuZGYoZGV2aWNlUmVjdC5zaXplLndpZHRoKTsKLSAgICBkZXZpY2VSZWN0LnNpemUu
aGVpZ2h0ID0gcm91bmRmKGRldmljZVJlY3Quc2l6ZS5oZWlnaHQpOworICAgIC8vIEl0J3MgaW1w
b3J0YW50IHRvIHNlcGFyYXRlbHkgdHJhbnNmb3JtIHRoZSB0d28gY29ybmVycywgYXMgdHJhbnNm
b3JtaW5nIHRoZSB3aG9sZSByZWN0CisgICAgLy8gd2lsbCBncmFiIGJvdW5kaW5nIGJveGVzLCBh
bmQgc28gd2lsbCBlbmxhcmdlIHRoZSByZWN0IHdoZW4gdGhlcmUgaXMgYW55IHJvdGF0aW9uIG9y
IHNrZXcKKyAgICAvLyBpbiB0aGUgY3VycmVudCB0cmFuc2Zvcm0KKyAgICBDR1BvaW50IGRldmlj
ZU9yaWdpbiA9IENHQ29udGV4dENvbnZlcnRQb2ludFRvRGV2aWNlU3BhY2UocGxhdGZvcm1Db250
ZXh0KCksIHJlY3QubG9jYXRpb24oKSk7CisgICAgQ0dQb2ludCBkZXZpY2VMb3dlclJpZ2h0ID0g
Q0dDb250ZXh0Q29udmVydFBvaW50VG9EZXZpY2VTcGFjZShwbGF0Zm9ybUNvbnRleHQoKSwgcmVj
dC5sb2NhdGlvbigpICsgcmVjdC5zaXplKCkpOworCisgICAgZGV2aWNlT3JpZ2luLnggPSByb3Vu
ZGYoZGV2aWNlT3JpZ2luLngpOworICAgIGRldmljZU9yaWdpbi55ID0gcm91bmRmKGRldmljZU9y
aWdpbi55KTsKKyAgICBkZXZpY2VMb3dlclJpZ2h0LnggPSByb3VuZGYoZGV2aWNlTG93ZXJSaWdo
dC54KTsKKyAgICBkZXZpY2VMb3dlclJpZ2h0LnkgPSByb3VuZGYoZGV2aWNlTG93ZXJSaWdodC55
KTsKICAgICAKICAgICAvLyBEb24ndCBsZXQgdGhlIGhlaWdodCBvciB3aWR0aCByb3VuZCB0byAw
IHVubGVzcyBlaXRoZXIgd2FzIG9yaWdpbmFsbHkgMAotICAgIGlmIChkZXZpY2VSZWN0LnNpemUu
aGVpZ2h0ID09IDAgJiYgcmVjdC5oZWlnaHQoKSAhPSAwKQotICAgICAgICBkZXZpY2VSZWN0LnNp
emUuaGVpZ2h0ID0gMTsKLSAgICBpZiAoZGV2aWNlUmVjdC5zaXplLndpZHRoID09IDAgJiYgcmVj
dC53aWR0aCgpICE9IDApCi0gICAgICAgIGRldmljZVJlY3Quc2l6ZS53aWR0aCA9IDE7CisgICAg
aWYgKGRldmljZU9yaWdpbi55ID09IGRldmljZUxvd2VyUmlnaHQueSAmJiByZWN0LmhlaWdodCgp
ICE9IDApCisgICAgICAgIGRldmljZUxvd2VyUmlnaHQueSArPSAxOworICAgIGlmIChkZXZpY2VP
cmlnaW4ueCA9PSBkZXZpY2VMb3dlclJpZ2h0LnggJiYgcmVjdC53aWR0aCgpICE9IDApCisgICAg
ICAgIGRldmljZUxvd2VyUmlnaHQueCArPSAxOwogICAgIAotICAgIHJldHVybiBDR0NvbnRleHRD
b252ZXJ0UmVjdFRvVXNlclNwYWNlKHBsYXRmb3JtQ29udGV4dCgpLCBkZXZpY2VSZWN0KTsKKyAg
ICBGbG9hdFBvaW50IHJvdW5kZWRPcmlnaW4gPSBDR0NvbnRleHRDb252ZXJ0UG9pbnRUb1VzZXJT
cGFjZShwbGF0Zm9ybUNvbnRleHQoKSwgZGV2aWNlT3JpZ2luKTsKKyAgICBGbG9hdFBvaW50IHJv
dW5kZWRMb3dlclJpZ2h0ID0gQ0dDb250ZXh0Q29udmVydFBvaW50VG9Vc2VyU3BhY2UocGxhdGZv
cm1Db250ZXh0KCksIGRldmljZUxvd2VyUmlnaHQpOworCisgICAgcmV0dXJuIEZsb2F0UmVjdChy
b3VuZGVkT3JpZ2luLCByb3VuZGVkTG93ZXJSaWdodCAtIHJvdW5kZWRPcmlnaW4pOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEludFBvaW50JiBwb2lu
dCwgaW50IHlPZmZzZXQsIGludCB3aWR0aCwgYm9vbCBwcmludGluZykKSW5kZXg6IG1hbnVhbC10
ZXN0cy9yZXNvdXJjZXMvM2RvbHBoLmdpZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBtYW51YWwtdGVzdHMvcmVzb3VyY2VzLzNk
b2xwaC5naWYKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgpSMGxHT0RsaGJRQlNBSWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0gvQzA1RlZGTkRRVkJG
TWk0d0F3SG8KQXdBaCtRUUpDZ0FBQUN3QUFBQUFiUUJTQUlmLy8vK0VoSVNNakl5bHBhV3RyYTI5
dmIzR3hzYm41K2Z2NStlTWhJU2NqSXljaElTYwpqSVNVaklUbjU5NnRyYVdNaklTRWpJUUFuSVFB
bkl3QWpJVGU1K2VFakl6Ty8vL0cvLzhoakl3QWhJUUFqSXdBaEl3QWpKUUFuTTRBCmpNWUFqTTRB
ak5ZQWhNNkV6djhBaE5hTXp2OEFqUDhBaFA5Q25QOUNsUCtFblAvbjUrK3RyYldFaEl5VWpNNlVo
TTZjak02Y2hNNk0KaEl5VWhJeWNoSXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJL0FBQkNCeElz
S0RCCmd3Z1RLbHpJc0tIRGh4QWpTcHhJc2FMRml4Z3phdHpJY1dPTkdoMURpb1Q0OGVQSWt5Z0xm
dHhnTXFWTGtTczF0SHhKRTJOSkFpVUQKMU54cHNZWUJBUjhGRUJEQXM2akFraUFYMWpqd01ZQlRB
aU9SU24wb3RTVEZqeDVBSkZWWThvQ0JBQkcyY3Z3NGdZSUdEeHMyY0tncQpkbUJKQVJ0RWdKQnJs
U3JXdUcwTmRqM2dkV2JQcWh6aVVoQVJHTVRnRFJRTVZ3WHdFWUlBRVJyVWJ2aFF0K0hLRFJwQXNF
ekl0bkxGCmtuTkJhSzNSUWNSaERob29rTUNzVnJPSURacEgxNWdSUVVGcTFINFpmbVRRQWdLTUZq
TDFsdFNnNENQZjNGZExKdFlnb2dZSEJzMngKbXM3TVlYQjFEcUlsZjJ4QUkwSm01UHRLTFFRUTBF
S0FqQVZKcFQ1bWFaeHAzczlzOFpZTWpMMDZpTWpZYnk5SEttRHRRYVFxZFNZVgpCV214MTU1N0ll
MVZFbVlydlphWkJ0U0JRQjhGSE9UblFYUjVYWVloVW9adG9NQnJ5MjJ3d0FZdk5NQ0JEQWRXNE5s
WUNnN1hIMnlSCklTWVlCMmdoOWxvSUJPYTJFZ2NpU0tEWlJ5QUlVTm9DRlpxbFFRemFTWFZBQlV1
Q2wyQU5EdkRsSGxKcW9VWmhkWkJWQ0dGYzJQbFYKdzMxbVNaaFdEUnBZQ1NhS1ZSMndncFJScm9o
U1NRNUVLZVdVQTJwZ3dRWWVmQkJYQm1GV0JjSUVHSUlRdzNPeEZZZlVuQWRFNlFDVApicjZVSnAw
ZnJlQ0FWRFJ3SUFFTUhIeFE1b0pBeWpTY2lCYXMxUjZUaVNiS0pLbE84dFRlVXZ2SHNUcG5WU0ZT
TUIrQjdGR3dBQU9ICnNta3FYNG8yYWhSamNIcGxBSlJMSWlvbGg0R3hCQUo2eWVZNnBaeE14dW5y
cjBjaFZZQlRyRVo1cXJGVEhpa2dYNHltcWUxNzFBWlkKVWdzRHNCcXRuSXZHK2FweUIvSzYxS1E1
V1RCVnViclZnSk5RSDBHYnFLTFI4bnBzRGV3TjNCa0JMQVRBSHI2V0NlZ3dzWEoyWnU1aQpERWMw
clZ0SVJReWdjT1FDY0lFSkYxU3NWS29jc3dxZ3hBaGRjRUxJSWorNWxGUmZEUVVlQml3UGxFTE5M
V3ZFMWs4RDRJUVFDaU9FCmpFTElST2ZjRVZzRjVIWUJ6aDRUaElMUlI2K0tuQWxCUTEyVFR3WmtQ
V3kxQWkwdDBNMVdwMVREZUdTRDVDYlRZVCtKazFRK3A2MHEKQVJCc1lHOExHZnVRN0RaTUU1UTVB
WU1kMzMwU1czNEhMdmpnaEJkdStPR0lKNjc0NG93Mzd2amprRWN1K2VTVVYyNzU1WmlQM0hmbQpu
R0cxT2VmbXlpZFJTM1liL2xHTVdvMXUwc1ZHM3l1Y0RERDBWN3Blb3M1ZU1XZ2dlR0RWdzU4VFZK
V25CYUV0Y2cxWlFRWW1zcUpwCkVFS1ByblBsbmd3Um9CajgwN2NEcGp1UVlrcVlnWjdZcGZWYWFi
THlqcFFCRWF6TmtOZXExcENZV3BFUmpGU1pabldncFF4bUVUamUKaURGRXdJQjU1QW1nQUEwQ3NJ
QU1JQUE0aGd5dEtBOVRnR1lVMElJRnlNQkQrV3VnQUdKQUF3alFRRHprU1VBTHVQT3doQUN0WnNL
NwpXcnhlVmhJWHRFQUJEQWdBcnNTbnBIZjFEUVVxR0FqUVNnQ0FBemJOS0ZyeGd0UmV1TVZEZzBu
a0JDc3JDUFZxU0xRaHZpbUgzRklVCnV3S0dxSTA1amkyUUt0YVNGRlVzaW5Ya0FrWmsyS0dHTlM5
d1FRcDB2a3VYVHdLQU1qQk9MQ2VzTXlQR25LakdOcnJ4alhDTW94em4KU01jNjJsRWdBUUVBSWZr
RUNRb0FBQUFzQUFBQUFHMEFVZ0NILy8vL2hJU0VqSXlNcmEydHZiMjl4c2JHenM3TzUrZm5sSXlN
aklTRQpoSHQ3bkl5TWxJU0VuSVNFbkl5RWxJeUU1K2ZlcmEybGpJeUVoSVI3bkp5RWhJeUVJWnlF
QUpTRUFKeU1BSVI3QUl5RUFKU01wYTJ0CmhJeU16di8vSVl5TUFJU0VBSXlNQUh1RUFJU01BSXlV
QUp6T0FKeldBSXpHQUpUT0FJek9BSXpXQUlUT2hNNy9BSVRXak03L1k1ek8KQUl6L0FJVC9RcHov
UXBULzUrZnZ4c2JPaElTTWxJek9uSXpXbElUT25Jek9sSVRHbklUT2pJU01sSVNNbklTTUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUHdBCkFRZ2NTTENnd1lNSUV5cGN5TENo
dzRjUUkwcWNTTEdpeFlzWU0ycmN5RkVqRUNBQVFIWWNTYkxoeDVNbE01NUVtZExnUncwc1cwcGMK
bWVLRWlZOFVWejc4R09EakNKRXlkL3BNRWVJRUNwd1RQNzRvQVhUaHh3RWZROEFNS3JTSGhoQWdS
b0JvR3ZGamloRXB1QjVjK1pTQgpXSTlra1NiODJNSEdnaDlFMVhZTnNVSURpWjhNVHg0b0VBRHFX
WXhSUWFUUWtHSnIyc01uT3dob0lGZG9neEFMNnY0ZHFIZXZnTVpvCjZZN1FzRUx3ejZzalFneStN
TmlFaGhFbE1KQk5DbVJCaHdRTGJIU1lITEx5QWN3cWdkQU5FU0owYjZJajZoWmVRUlJFMGJwMVM2
eUkKdVZOQWdBYzJlbFRvSVJZeDg0NUFFRFJ3OFBQbFY4Lzd4a09mVHRFWkxHZmpvblZTdHM0ZThk
V1BCK0xUdGtpMkE0NlRQQndFMEJHaQpSWWdlSi9SbXdXOGFiTENDYUdDaGgxZ0lKWVN3VW1pZWhZ
YkJZQ1VNOXRXQkR0cUcyMFZlQ2VaZ0F0UUJJY0FJUC9Ud1FBOE9OQUFDCkF5TUlrRU40NW8yUW9H
Z2lmQVdUVjNRTkpoZ1FvUVhZV1dGU1piVUNoQm5DSjk5OE9YMEVnZzRMOUJUYkR3djRVSUVQRGpE
d1ZnYzYKakZEQkNBN1k0SUFBSUN5MndBa05nUFZEZUNRMEVCWlpLbEQzZ0ZaRGpyQkFDQTN3MTJL
Ukg5RUF3WkVsNmRiQVpXbDEwTUJyQ3lSUQpRWmNNU0dBREJUZjAwSUJiTm9UQW9uT1A5cFlsaGp5
c0pPa1BUUDdRNVg4Qm1CaGlaWHZldG1GdXRoM1ozcXI3aUkzd0FHOWtQV2VECmRmSFZhaXFTZ09s
VnFxMjgzZ3BFcjhEMmFoMmdlZ0d4YTN4NjdubGRVSWNkQU1HeHQ5M3E3SzdRQmdzc1lyWHUrYXg2
VkNuVWJMUkgKeHZlc3VPU1dxcTJ6NkFyNzY2MmxydFp0VjhiZTltd0JCY1FMckxtMnJwcHZXdTlX
UkJZQkJzeTZMcnJqOHFxZWtiNlNXMEFORXl6YgpMN3hBR05CWEJQQWRDd0cvQmZHTGNMMUFWT0Rn
d3h4K1JFQUVBNHlLY1ZkN0VzRHhxU0FMeFJPc3VPYTFWd0dYdFl6ZHlmNENVVUFDCnM5bnM4MDRk
Vk9EWFFSNzhiTFJBSWc5dGtBY3lDT1JCMFVlRC9OR29DczFRZEF4UVI5MnR1d0t4d0lMVFJjdnd0
TllQY3d2QURGOEQKRUlNTEFHUk45cnRtRXpUMjJ5Mzd4MDMzMFE3ZnJmZmVmUGZ0OTkrQUJ5NzQ0
SVFYYnZqaGlDZXUrT0tNTis3NDQ1QkhMdm5rbENkcApkK1VtZVpVQ1V6RXZuamZTVVdtQUFsMmRK
MzRTazJmaEIxZG9SMkVPZW1Gbk52WlJBZ0c0bGxXRHBSdWVtQU1uM2RnZVZya0xmcGdEClA1ekVa
V3U4OGNBYkNZTjF4ekxpSHdrZ2dBMENORG5yOUFLOFNYd0lxM01tUW1nMTR2bjRxai9rNE1BQ214
R3ZnZktuaVFaQ1hVVTYKam5DdE5QZ0tSQUkzd01hQURxZUJvTUVPWUJFQlo3N3lPY0lkaGxxYXNr
RUtmUENZL3hER09DSTR3V1pROHp6ZFZleFk5V0dBQTBMQQpBem5WeFRpRUFVc0JDVEpDclRVTFBt
UUJVd2plOUw0UzlFZ3d5MkVaMTRUM3ExU2xoVGVKdlZrQlhBVERHZG10NUFOeVlScmcwaElzCjYr
Z2dBNXVKSVZuMk1nRy9zRVNJZ1NOaXVxcGx2N1Q0RGpFT21jSGJUa0lBcUtRclcrU3lscXBXTW9B
UEFHb2hSVXNqM1U3aVJGYWQKY0YwRjZFRVhHek0yRDZ3TmJEQncyaHBuNkxLVEZLQUN5MEpiMjJD
UU5ybmxjWXNnS1dGZVJtaEh0N251a1pDTXBDUW5TY2xLV3ZLUwptT3hJUUFBQUlma0VDUW9BQUFB
c0FBQUFBRzBBVWdDSC8vLy9lM3Q3aElTRWpJeU1yYTJ0dmIyOXhzYkd6czdPNStmbjcrZm56c2JH
CmxJeU1qSVNFbkl5TWxJU0VuSVNFbkl5RWxJeUU1K2ZlcmEybGpJeUVoSVI3eHM3R2hJeUVBSnlF
QUpTRUFKeU1BSXlFOS8vLzN1Zm4KdmNiR2hJeU16di8vSVl5TUFJU0VBSXlNQUh1RUFJU01BSXlV
SVlTTUFKek9BSXpHQUpUT0FJek9BSXpXQUlUT2hNNy9ZNXpPQUl6LwpBSVQvUXB6L1FwVC9ZNHpP
NStmdmhJU01sSXpPbkl6T25JVE9yYVd0aklTTWhIdUVuSVNNQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1B3QUFRZ2MKU0xDZ3dZTUlFeXBjeUxDaHc0Y1FJMHFj
U0xHaXhZc1lNMnJjeUxHalI0cytRcUlZR2ZLanlaTURRL29vZ2FLRlNvd3FYNkk4cVhLRQppQkVy
WkZaVUtXSkZUaDhRZ2VxY2lURGtpQThsVnBRWUFSU2tqdzhqa3JwczZqQW1WYUlIUTM3SUFTRkgx
SklnSTVRWXNMVEUxWVVoCk42UTlpeldsandFNUJDeG9jTUVHMjRnaGNleUk0QlVzUTZzQy9HNjBl
bGZnMngwWFB1d1FzR05BWWNPRUFSQld5U0JDenFvcUN4QncKN0ZIa0M1S1RRNHNXM2VLbmp4VXRW
N1JnRVJxdHlnTVhCR3NNeVlLR2loU2xRNnBHc1FMbmlCWWpVRVFkb1dMRWNPTVBSbXk0cWJTRQpD
YlZXUld4Z0tYMEZoaFpKZVk5V1dRT0JBZ1A3c2pPR2JJRkNCUGJyT0RPc3VGbTh4WVlXSWtUZ2Jy
QVVSWW40SzNBczVTRWlnczBXCkVLelFnRW9scEREQ0E4MjVaNTFOdlFISDBtOGFxRFlaUnpHTkVH
Rk14YTJ3Z1hJbDdOQ2JDRGxzMEVOUEl1QWd3bEkzM0hEZ0FEdU0Kc01NTjI0V1V3d0FRTE9EVkJ3
UDRkMEVMQTRpZ0VnSkFJdEJCZURENUVGd0oyUFdVMTNRaTlLQ2hmQ1NVMEVCVU5xelFWUS8wVWZE
QQpBeEZNRnVTWElRbXAwZ2VNQ2ZCQUR5eFNFRk9RRWdCSnBGTSt2RmNDZEVvRmVPSlNNVzczcFpB
SXRObW1tMzhpRUZJREFnendBV0ZBCmR0Qm1UQjJGdEZSdlp1a1paQWVKN3RtbnBaVUN1U2lpZ1hy
NTVhYVBYV1RrY2pGMWgybVFhMTdxSjUvN21QNXBGWnMvSXVDQkFRWDQKWUtrRXVESktVNnFYZmdx
bXJXdEtNR1NxdUNvNkxGaGUrbURBc2dZb1lHdXZWbUVWSmdJMWdDcXNzR0pTK3F5YlZta3diYWR2
dWhYUwpBUUo4RUZ0a2JZbkxhR2pjQm1uQUFBUnN4dDJFRFdVbVFBRzFocHB1dllRWkVNQUZPcHly
cTBReFRVREFCRVB0cS9CRFZvVVE3c0lRCkZ5WFVDUTRyQkVMRUdLY2ttUThWSnpURHhRRElBSExH
Q3c5c01RY2tSNXl3UUNCY0xETExLYXQ4bHd3dWdQQ3l6U1BIclBQT1BCZUUKY3M5QUJ5MzAwRVFY
YmZUUlNDZXQ5TkpNTiszMDAxQlBGRzNVSDRYVUZWTVBVLzNYWkRrczRJQk5UR2xOVVVnREZJcERT
QXM4WUxXSgo0YlltZGt3Mk1PYkREakg3bFFBQjFsZkY1Rk5wb0wwTmJFeUgxclNBandOYWRjR2NJ
cFIzWGRaTFQ4dXREemRFOE1BQ0xVeTV3MUpZCkQ3QkFEemhNcDFyWVloTVVxNkFxMlFCQkQwazlZ
R0trVCsxZzRnWS9oVzdRNktTSEpKWk5VNHBnUW9XUnlwN1FqNEhXanRRSUdaUkYKUE9PeXE2UnRt
QVJPbVZ4UFdQdSt0YURVMTM3ZlRlVWxoWHp5ektQcXFINGwyZ1NkOUs2QjE2ZXJQdHdFTm5aNDZz
dTlBSUZSaXY0SQpPZURnM2didlJVLys3Q0VSRUpLaVFLb0JUOTV6dVJHUVlIejdLd2hoRkFXdWxm
VG1BV1ZCd2ZhZ0ZocEtBYkIyUGhtT2p5WklOYitzCmlWSzFpOU42bFBRWWtiQWxaMDRMMXVORVNJ
TFlLWEF0YkhrWlFWcUdFQkRNWUdodHZMTGVlM1FTa2dJY0xtc3dhSmtNWkFpQW45bk0KYUx5cXlW
UmlVb0VKQk9aTklBaml5RkRZdEZlRjhFY3FLVnhDUnZZeGd4Q1JhV3VhREFHZWFMRVlYSXlHQmFG
aUZkZGtnQVBRalhGcQpUQ0M2RWtqSE90cnhqbmpNb3g3M3lNYysrdkdQZ0F5a0lBZEpTS2NGQkFB
aCtRUUpDZ0FBQUN3QUFBQUFiUUJTQUlmLy8vK0VoSVNNCmpJeXRyYTNHeHNiT3pzN241K2Z2NStl
VWpJeU1oSVNjakl5VWhJU2NoSVNjaklTVWpJVG41OTZNaklUZTU5NkVqSVFBbklRQW5Jd0EKaEhz
QWpJU0VqSXpPLy84aGpJd0FoSVFBakl3QWU0UUFoSXdBakpRQW5NNEFuTllBak1ZQWpNNEFqTllB
aE00QWhOWkNuUDlLblA5QwpsUDlqblA5amhNN241KytFaEl5VWpNNmNqTTZjaE02TWhJeVVoSXlj
aEl3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEK
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSS9BQUJDQnhJc0tEQmd3Z1RLbHpJ
c0tIRGh4QWpTcHhJc2FMRml4Z3phdHpJc2FQSApqd05uaUJ3SnNxUkpnU00zYk5CZ1FXVENrVEJk
bnB4Sk1LWklHUlk2ckNTeElXWklrUW82aEFnaFFzU0hHVFNUamxUUUlJYUFHUzQ2CkNHQXdJK2ZU
R1JSaUttREEwNE1IRFVlUkpwMFpzNEdNQ3pNU2RFaXBRYVZPRFRCaHJPeXdWdVpZc2pNTzJGVGdR
dVNHRjBGWHF0elEKVWlTRG9tTHZLaDFwd0lCV0JUa3RDT1pKUWtSV21Jb3pBMkRjMkdiVkRnd2tW
OURwVTdOaWtZMVRkNDU1dUVNRG9TRjYyalZOMHpQTQpDSTVocm1SSm1pVHQweUlKb0ZhdEdxWUlD
eVBnemticCtUZkdrVEJHUGpDQW0zaHVtSVZ0WTNiK1hLUUdFZnN3VlUrM2Z0MW1nQUcrCnVWOXNy
cjE5WStIcDFhK2ZJZHZtdzlMeU0vb2RhU0VuaGFQNTBTWlNkUFFGQUVNSDJRV29tVWhYRFpBQUJC
TEVwK0JkTThBSGd3UUQKb0pmWWhCUkoyQkJqQklRSUg0Y1dpYVRDaGdkcGwxb0VEd2hIWWtWKzla
UWlkaHZvVkNNTHRyMDRrVWdpa0ZaUVNoWjhsOU1HTU1BZwoyWEM1NmJoakI1UWxOaElEUkxLa1FB
a1FORUFrWjBrcUdaRklrdmtJVTJBSVhxQ0JBakdWcDZWRWZrbEFWMTFWU2FhQkN6S3NGTjVxCktK
NTUzd3hGTW9BV2ZUVlNsaE9XRDBTd25KMFF6UkRBbmlKMW9FQmI0TTJabW9jWFlZQkJnTVpaK1Jl
VzFWSDNRSjBlWVdBQ0JpaEkKYWtKSjltMkdYUWNha09Cb3B2dTRRYm9SQmlrQUVLcWtBRXpxa1c2
TmppVENkNEpSTmNONG1WSzMya3kyRGpUcVI3cTJSWmNJUFFXNQpBUWtkWERaRGJvMVZWOTJnaEJx
VXFFNFc4RlJqV3p4cG9OeTA1UkdIYmJZL3ppQkNCYU9Ga0FFSmt1MGFWS01HSEVBZG45UGlKaWlu
CjZQNFlKR0lqd2FzQmdsam05aWVkL1M2VWFJOXM3a293a3RPSk5BQ0JXU2I4RW45MGhiQ3RiS3Ex
T2dNRUdycHFzVjl2c3Vsb1k0RjIKUmllL0Z2OWtRWThucHhZeHVlV3gzREp6WlRwV3JhYWI1bmd6
UTBnKzJwN05QMTljS3RBaUZ3M2pTR0VwcmZCMkNubG5tYXBPR3kwQwpDSTBhSGVlejV6cWRhSkJj
NWlqU0FoY0kwQlpjVlpzcVFBSUN5Q0FCbVROY2hXOWIzK1RXV04vUlJRL2RRVjhYNk9RQVhXNVoy
UUd6CmpINXdOOVQ5QnIyeUFqQTRnTUFML1MyQUV3bmZIUWpaNEFneXl6QisyZHBVbkdlRUJmQmFr
TjI2SnRSY3FCTDJBY3hKSzRsYXNFSnIKdDREcE52S2FPdVdEZDYzbHlUM1QvSGw3TDUrOWE2NHRE
ejBEN01TTjk4QUt0dEd0TzZGbDVpc3M4Z2FNUjE1emVZOEUzM0Q2cnJpeQppcTFEUDVLR0pUb1dJ
dEhpcDRSKzFDSVZFTUQ2NkNLT0pvUHdwKzNRK1BYYi95R2V6eXNFcXY0MW9VLytEREtwWXVrdmZB
a3BJQW9BCitKTUJHc3RXQm1SZ3BJNGx3UXBhOElJWXpLQUdOOGpCRG5yd2d5QU1vUWhIU01LUEJB
UUFJZmtFQ1FvQUFBQXNBQUFBQUcwQVVnQ0gKLy8vL2hJU0VqSXlNcmEydHZiMjl4c2JHenM3TzUr
Zm43K2ZubEl5TWpJU0VuSXlNbElTRW5JU0VuSXlFbEl5RTUrZmVyYTJsakl5RQpwYTJsaEl5RUFK
eUVBSnlNQUl5RUFKU00zdWZuaEl5TXp2Ly9JWXlNQUlTRUFJeU1BSHVFQUlTTUtZeVVJWVNNQUlT
VUFKek9BSXpHCkFJek9BSXpXQUlUT2hNNy9BSVRXak03L0FJei9BSVQvT1p6L1Fwei9RcFQvNStm
dmhJU01sSXpPbElUT25Jek9uSVRPaklTTWxJU00KbklTTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDUHdBQVFnY1NMQ2d3WU1JRXlw
Y3lMQ2h3NGNRSTBxY1NMR2l4WXNZCk0ycmN5TEdqeDQ4Z1E0cUVxS09reVpFb1BacTg0S0dEaVpJ
cFkxWTBhZEtEQ1JBWFpxQ2d5Yk1uVEpreFYrSzhvTU1EaUpJZFBIZ28KMm9Fb1RRMUpiZjRFaWxM
SGdaSUxaQ3kxNFZUSGhRWTNiMTR3WWVGbFNhaFRxWTcweWJNR2lKWVhMb0F3MGFIRDI2VnAxUVkx
ZWZVcQpUUlF0alpwd0FLSXBDQkluOVZMbGU2Q3hYNThtUG94Tm1saXh6SjZQclRhbTJTQ3VWQjJX
OWJMVnZIa2xaZENoUlpjc0lLRWtoQXdICklKUXVlaU52NnBRMEI4Z29HZnUxNDVJZW5DcTBmZnNp
VDd5amVScWtXVnlsOHVWV2dVODFHUUJ2ODQrVkN5WXZPUUg1ZGVmN0RIblQKWkMyZ0pOSHZITE1u
VEc0ZC9jUzB6RWtlS0VCZ3dBRGk3aHRPMXhFQy8vcWUrYjAzWFhzQkFtVWVhaVh0VnFCYU90eFFI
Z0FsRGFBQQphZ3Z1UmNGOUVVWkFBWVVWVmxWQUFTYmRJRU45SEhZb2tsVWd6bWVBQVFFUVVLS0or
cjI0RUUyTmZWaWJqREQraHlOMGpOVTQzNDQ1ClF2ZlNjRHhwVUI1YlFjWjR3bEVJMGJUQUFocmtv
QUFPUEQyV1pIZ1huS1lkVWc0OGNBTURWV1oyWlhnNldDQVlnaVk1TUVNT0NkQmcKRWdLLytUZW1k
ampoMUVGUENoaEZZNXhBUnBUQ0J1Z0JkME1PQW1oUVVnNUdnVkJEajNGMjFBS2czK21nUVFJeU9H
QlNYY2lSeGlkSQpMZ2kwQVF3cHBLYURBQW9jZVFFS1IvTFdXQWI3RU1nbUowYUFidkRDQnBCYUpt
bHJPdERsMUFFeHhOQ1liTEM5NmhFTXNpcEdFd2JJCk9hYXNxMzErRkN1REpabGdGRjRIc01ycWE3
NEpPeWVQT3FBZ1Y0K3daUUFiczl1U2hOVmRPK25nNjYvTFFxRHRsV3pKWlNkakp2bTIKNnJ2d2tq
QlpXQ05jc0VBSE0yam1LbEd4OVladmtpV2hnSk1IZ0NrRndsR3EraVdDRHRrZUhHUkpjN1gwRmdv
ZGVCdnhhMFZ4RUoxNgo1UzVubE1kSUJhZHFzQmhEM0d6SkVLSmdBa3MxOFlXdFh3TjRnTmpMSlpz
RVFnV0g2VWxhcTM3ZE1BSEpNRytwZzUxMU12WWFxNW54ClhDNXdaOUxrSzhnVVp4QmYwa1RldEtk
c1JFZk50VU5oUmszVENWTER6Qk96aVczbmR0cnVSVXVDV2R2cXFjQ0JuVFd3NVBBSlJnbFEKZ3dj
MzNPQWR2RjZsaTdFRjNScDFBa3VBeWZXQlVsbDZrQU1ESUVqQXdBSU5kS0RBQXcvWUlFR3FDQ2RP
RTB0UjNXUlhsaHM3MEVFRApDU3p3OW5NRitrU1VDalEvalBxMExRbmdjdGxtMDJqeFlya3FWVUxI
ZUFFMmd3Y1B6RVdZQjI3dXFleHNNcXI2KzJXdnMvVTgxTEFmClpKSU1HOGF1NmZPclZ2dlk5V0Q3
UmZaWjl5MDQyckxRVXl5K2xlYmFCM2R4VmJMOEk0QVNtVFRoMUQwSkVBQ0d4aW5LL0x3WElxU2QK
YjNycXc5OU1CamkyQmpyd2dSblpBQXRxQlVGWUFlQUZvYXJnUllwRkt3MXE1Rk1lREtFSVIwakNF
cHJ3aENnMFNFQUFBQ0g1QkFrSwpBQUFBTEFBQUFBQnRBRklBaC8vLy80U0VoSXlNaksydHJiMjl2
Y2JHeHM3T3p1Zm41Ky9uNTVTTWpJeUVoSnlNakpTRWhKeUVoSnlNCmhKU01oT2ZuM3NiR3ZZeU1o
SzIxcllTTWhBQ2NoQUNjakFDTWhON241NFNNakh1RWhNNy8veW1NakNHTWpBQ0VoQUNNakFCN2hB
Q0UKakFDTWxDR0VqQUNFbEFDY3pnQ2MxZ0NNeGdDVXpnQ016Z0NNMWdDRXpnQ0UxZ0NFLzRTTWxF
S2MvMEtVLytmbjc0eU1sSVNFakp5Ywp6cFNNeHB5TXpweUV6b3lFakpTRWpKeUVqQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWo4QUFFSUhF
aXdvTUdEQ0JNcVhNaXcKb2NPSEVDTktuRWl4b3NXTEZYZG8zSWl4bzhlRkcwUHVNQmp5d3dlT0gx
T3ExQmlpd29jUUgwNk1ITGh4UVFZSEswTE1WTW5Ub3NnTApIMWF3UENteXFNYWVTQ09HMVBFaGdV
WVBHME5jZ1BvaGhZY1FKVjVlRUJFeXFWZUdHd1U0V09EQnhnNmlHbGQ4V0pDemFvZ1FOTlNHClNJ
SDJxMTJTUmpYaU9QbkJnWWNQRjk3Ky9mRDM3MXZDWGUvZURYbWdjVjZOTm9EaVNNRUI1dHdMYWxs
Z1Jxbllyc2pHQnlDQWh2QjQKNk4rcEYxSnc3dXk1NkFFTUcwSExMcm9neE9EVnJCVXoxdGhZZEdN
TXZ3K0lKRnZqYUc3V0lRdVVMZzNWK1BIRllRY0llT0M4NFBLZAp6MXNQQ0hCaEJIYUUrN0ViSy8r
ZVBXblJoaUlMek1CZHZqM0JvdHVydTU4djhESDkrd2NUNDkvUHY3Ly8vd0FHS09DQUJCWm80SUVJ
CkpxaGdmK1F0YU41SThqbTRra2dTS3NRZWVqdDR0ME1IRFZZSWdFYXFTYVNSQUJkb3hFR0hEMjNB
MzBaRWlUakFlanNFRUNGRUc3eXcKUVkzMGFWUlZDU2dtTktKR0wvYjQwQXNBcU9qZURpbk1kWldR
K1JWZ3dBNEV4T2RoZlJwZGdKcE9JZ3EzZ3dBeVRsa2ZZUUtFNE1BTgpDekJwM1VZRkZDQ0FtUVN5
bElHWU9HVFFKVVN4amNmbWZCU1NKQUFEQWl5Z0FKZHJQclRialA1dFZFSUpxbDBYb3dBU21MbFJC
bXZxCkY2QkdKdGoyRm84N0JQYUJDaVo1Y0JWYWlvWVZxYVFBZ3JqQ0NTbVVrTnBmKzJwNWdObEx0
bGtWNWdjQzJKQkFBd3ZrYWdNT0Nmd0oKS2FTOEVWcm9WRUdWaUtRSFZnVmxHRkF2RWZhQkRoNEVj
TU1IRFRTUUFRNHpVQkNBdGtZVnVGR3Fya1pGMXdmY3JlQ0JDQ2ZZOWdFTwpPbHdnUUFZTlBCRHZB
ek1JSUVBT2pmS21wWUVnN25DQ0I0aEdGVmdJYmFYUUFFejJ3cVJEQ0Fwa01BTzgxdUxBbUdOM2xp
ZFNWVlZOClJUQmZuWWFhMTJ6QzRsZGxxaFhrdElLeGhOSDFXV2l5QVNjYkJMN0poZ0FHcEZYY25z
Y2FJVEFhY0x6RkxKckx2dEdzcGMxSDZpdmIKMGFEeEJsek5PN3dHQVFZeGFBUnpiMHdUZlIvTzRU
VXQ5ZEJOVTN5aGx6UnBoT2xHRVN3SE5sZzdySkJDQ2tLRkZPVUFYNStkWDlwVAorelVYOW9YZHls
MGxXVG1jQk41amFnNGdROGdKam9qREFuRXlNRk5SOVQ0Y0tkY3ZHc3R2bmxRcTZzRUNBV1FnUWIz
TGRlQjNrUVB1CmNGbmJJZEVsVjhvaFBLQ0RBQjljYXdNRk1INGNBTndaem1TamtZVm1lc0xKS0NR
S1U1TFVKcGtDQTdTdVN3RU9Bc1N1WDBnRGNPamMKQmkzZ3ZwK09NdW40VjZiTkdrYllDbVFwQUNy
bFp6NS8rMzg3V0xEQzJDb01sbTVnRGtnbHBnUU1tS1Z2M08vdGRHT3BWVGEzZzJIdQpMNnQvMW9S
VGtJNENOcFcxWGNWVFJrRmFBQXVIcEJTZ3dGaWxRZHJUWUxOQUJGbHZZZ28wR3REb0o2R1ZhUWxt
TVZPVTNHZ3lHcTRsCjhBQUZ5TmNCQWtBQURqb29iM1BiZ1hxaVJLb1JLbVVqSzk3elFBVXEyQm5w
WmVjODlDR1Npb2hrUTR5b0NBWStMS0lTbDhqRUpqcngKaVZDTW9oU25TTVd6QlFRQUlma0VDUW9B
QUFBc0FBQUFBRzBBVWdDSC8vLy9oSVNFakl5TXJhMnR2YjI5eHNiR3pzN081K2ZuNytmbgpsSXlN
aklTRW5JeU1sSVNFbklTRW5JeUVsSXlFNStmZWpJeUVwYTJsaEl5RUFKeUVBSnlNSVl5RUFJeUVw
YTJ0dmNiR2hJeU16di8vCkFJU0VBSXlNQUh1RUFJU01BSnpPQUl6R0FJek9BSVRPWTV6T0FJei9R
cHovWTVUT1k0ek9oSVNNbEl6T2xJekduSXpPbklUT2pJU00KbElTTW5JU01BQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkNQd0FBUWdjU0xDZ3dZTUlFeXBjeUxDaHc0Y1FJ
MHFjU0xHaXhZc1RZMmpjR0FPang0OGZOM1lZc1JHa3laTUVPWFkwcVBGQ0J3NGQKVnFLY0dUTEdD
UklrU2c3VU9BRkdDNWN5YVFxbHFGR0VVUkVqUktoY0dsUWdVNDVEbzNJY3lVRkVod3NjT01UbzhB
SG1DQW9mS2p5TgpJYUpDQjdNak9vQ0FHdFVreHdzZk5NWnM2ZkxEaDdvYXVuTGxhcmNxMEtjSERt
aHNXMU5qQUJZTEJNUm9zREdGQWcwUllDaGdvU0F4CkF3RUxHbWhZc0VCbDRLY0JCaE8rT0paakFB
RVBBaXlZY0RrMDRNODZuVzRjSUhxMFJhYUJCWmZPemZzQWhOZ0YzOWEyN2ZHMXh0NFEKQWtQNFBm
emdVdUpDTitxTzRUdjU5T1lKTjY2RlByUTBkb2I3YkxuVDVHakF4WUFKWjRHTFg4OXlMUHYzOE9Q
TG4wKy92djM3K1BQcgozOCsvdi8vL0FBWW80SUFFRm1qZ2dRQ29oeUJJSEszVjFJS2thVVNCQ0E1
Q1dGZ0hWQ2wxVzBmZjBjZVVjekc0d0FFSVo4MVZVVWtLCnpxY1JDRWhSQ0p4R0Nqd2dRQXQzeFhW
aURGcUY1K0dLU1lHUUZnb1VNSldBQUNtZ0IwT0g0TVdnbUZ3UHhyY1JYQzlaQmRNSE1jR2sKMUZL
ZEVhV2tCSEpwQlo5M1dLbkV3VjE4ZFNBQ1RCYzg5NUIwR3duZzJwZGIzWlZXQ0JkY1lGVlNHM0Zn
SjFjdHZJUW1sU0xBc01KYwozbzFWZ0p1S09WbGFYUTVjdFVDTkMrakpnUVlpZHVBQ1p3MDg4SUVB
RVd5bVdXWVRDTUNCQ3hvSVFPbHhnUldnNDNyN3FQWjJuVXFpCktxQUNEQ2s4QU1NREtUaWdRQW9M
cEVCa0EwUVNHU3F2cExyZzJsTTdIcGZjY3NvRmhnQnNTd1ZBcWdZS0lEckJZd0ZFa0VJRUFWQzcK
bEc3OXZkYXNkYnd0NWNJRUtUQkFyV080UVZ1Z3VNeFJCKzFZdmEyS29MSzZDZGFzcTd3dE81MkY3
YkZKSGJuKzFtc3Z3RHNKVmtBRwpHaTFMOEx4TklwelNSZ3BnVUtqRWE0cUVKTVlRZlJpY2V4eEx4
TkdoQkdBd1FKb1JRM2h3Z3QrcU9sWEs5OFpRNGNjeHdBRERCQjZuCnVLQkdIMmdvbTF3cFhKV0Ft
Z3lWc01HN2NvbGdZNTRKZEdBem9Ub2JaTUxSQUpoQVlBeDM2ZWtnMWh4bytoSUxLeWMwdGRWWHEv
RG8Ka2xzNWphRUxIVHdROWtKVUM2aVJDMmpEVDVrWkN3MWMwQUoxRzJPOEZKVXNjUEJvcEhHOXpi
RklWTlpKWlFjdE1MQTMzekFqN1IyRwpWSEtRQUpXVE9VQTB3RWwvTUlLZE1WZ1FRZ2dzOUZ5VkMx
UnFFTFIwZ29VY0ExdzV2cTZuQng3b1NXVURMeTF3TE9TUkcwZ1dUQnVsCmxSWlhDN3pVUXZISXVy
NVZWWWp6NWNBSGp5ZXYvRVpLazZpbkMzVnlCSzFZZlI4b0Y1V0ZxalFBMmlHejNEUEs4cnA2M0tF
S2pCLzEKemx1MSs2cEdCV2hBVy9jeG96cVlTalQzYnFISDVRdWdBQWRJd0FJYThJQUlUS0FDRjho
QStBUUVBQ0g1QkFrS0FBQUFMQUFBQUFCdApBRklBaC8vLy80U0VoSXlNaksydHJiMjl2Y2JHeHM3
T3p1Zm41NVNNakl5RWhKeU1qSlNFaEp5RWhKeU1oSlNNaE9mbjNxMnRwWXlNCmhJU0VlNXljaEtX
dHBZU01oQUNjaEFDY2pBQ01oTjduNTRTTWpNNy8veUdNakFDRWhBQ01qQUI3aEFDRWpBQ01sQUNF
bEFDY3pnQ00KemdDRXhnQ0V6b1RPLzJPY3prS2MvMEtVLytmbjc0U0VqSnlNenB5RXpveUVsSXlF
akp5RWpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
CkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWo4QUFFSUhFaXdvTUdE
Q0JNcVhNaXdvY09IRUNOS25FaXgKb3NXTEdETnEzSGhSaGtjWkRUOSs1RWh5NDBjU0kwQXU5RmhB
cE1pU01DVjY5TkFCaE1lVklnc0lDQ0FBZ3dlVk1ZUGk5TURDd1UrRQpMcE1tRmNvVTZZUUVNQnF3
QUFyQTVZaWZNZzdjTkxpMUtVZWxZTUY2OEVCQ3FkZXpNMEY0OENsakxJa09aREdFVUVzVEF3Z1FH
RVFlCjBFcjFMRXlYZGorYThHQUNSQU1NTEVSZ2dIdFhnMDJSRC9qNkRTb3lRZ2NGTWhZMCtBZ0Rj
UXdHQWhob0FKMGc2ZDY5WFNlWERLc0EKaGtjRlBDdFVZQ0hBNWVrRER6THc3YXY2NjhmYllmVWUw
TDAzTis2UnZabWFCbjQ2YS9EVXlkRXUzMTNBQUFVQldLRkhqLzVjKy9idgorK0REaXg5UHZyejU4
K2pUcTEvUHZyMzc5L0JKdm96ZjFDb0szdlFadWxRb0VxNkh4L2psaDVSSElBalFBWElFZlNTQUF6
SDhwMWFBCkFoN2tVUVV0T0FBQ0FoaTRGaFlMQ2xSUXdsamVSUWlXQWd6QXhRQmhHTVFnQXdadnJm
WGdSeTlnRmFHRU12REVrd0MxMWFpQlNDejgKdDhCYWc2bWxWbDd6V1RRU2hGNTlaR01BTUdnZ2dB
WWF5cUFBQmk0NFFFSUNSREZHMDFnbWtKQmRSUVFpeUYxd01OVEdRZ0tqc2VEWQpXQWtzUmhOZWF0
VzAxSUJKQVlpa2RCN2R0aHRZTVRUb1FReDIvZWRtQno3QjFWMVdCU1JBZ0ZuajJhYW5uaUlsWUdB
TGVMbnczMW9kCmpNRFlCWVBWUkFJSUZuaVFra3NETEJoaWVIcEZsbWNHK3c4RUYwTUhEUWdaSkFn
aytPVGljZ1d3QUlHWTZkbW1xbk15ck5EY29ZNysKZGtCTHA2cm5hRXVQTnVzc2NNbkdKd096QlRD
YjI3WERGYWRuWkh2eU9xTkFJa2tRZ0hDNDRhWWJxeG5NK1MxT0hnMHdBRWlIcmt1UgpSem5LUzFs
YjBkb0xwcmQwNnV2YmZ2NWlKTktXZHdZYzBrY0R3T0Nhd1IyeFZBQlArVEtjMEc4UFZCdnh1dEUr
RjFFSytmRmJsVWNrCllKWW50eGNQcEFKOUhxWEVsVWVCNVZta1F5bWNBRUFLRzJ6d1hscFVmV1Nv
eXlValpEUE43c21BVjFuZ3ZvWVh6d1ViN0JGakE3UDEKc3NRRGRrQ3B5RzFGNlRIVUNVcEZkWkFl
cmRBend6SllqU25QV0I4OGszOTVTbFkyZngrTjVVRUlMbVNGV3RKWWVRODhGdHh5cTcwMgpqVzM1
WkVLcWV1K3RGQVltdEN5U2JsOS8yeFlIVzE0bHE5ejRCcjUyV2tRS3ljRnZIa1Z3dGNReXZGVVd5
SGo5WFp3TW1pZU9zVm9mCjZKeGRxeXlacmpqTHJ4R1psYkFBNzUzZ1dIWUN1NmZ0S3g5dExLTzhE
d1J5V01HelRYYnhabStPL1BMTU4rLzg4OUJITC8xQkFRRUEKSWZrRUNRb0FBQUFzQUFBQUFHMEFV
Z0NILy8vL2hJU0VqSXlNcmEydHZiMjl4c2JHenM3TzUrZm5sSXlNbkl5TWxJU0VuSVNFbkl5RQps
SXlFNStmZXJhMmxqSXlFNSsvbmhJeUVBSnlFQUpTRUFKeU1BSXlFaEl5TWU0U0V6di8vSVl5TUFJ
U0VBSXlNQUh1RUFJU01BSXlVCkFJU1VBSnpPQUl6T0FJVEdBSXpXQUlUT0FJVFdBSXovUXB6LzUr
ZnZoSVNNbEl6T2xJVE9uSXpPbklUT2pJU01sSVNNbklTTUFBQUEKQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUFBQUFBQUFBQUFDUHdBQVFnY1NMQ2d3WU1JCkV5cGN5TENodzRjUUkwcWNTTEdpeFlzWU0y
cmN5SEdqakk4ZFE0cDgrQkhreUpNb0FaUmNLU09sUzQ0c1B4NHcrYkptd3BJSVk2WlkKYWJQbndZ
OGhXaHI4YU1HRmpCUXpoZnBjS3JCa0NSRkRQeWFJeWJUcVJ4RVRSR3dvK0pIRFZCa3pxNG9sNmtH
cjBKVWNTb1lWYS9WQwpEQmN0TEt6OHdLR0Z6TFZzbDM1a0lJRWxCd1VKaklKMVFETnZUNVlKUkhq
NGUwRnRVc01vV1RZdHllSENZaFVNUEtoMThCaXlTTW9qCjVGSjJVYlN1Z2hjcjdoNGdyTlF6VEJr
Y1NsaUl3Y0ZDMnI4Y0pMeXdvR0xsZ2QrL1c3dU9pSE5vN0pJdVhyeTF3S0JFZ2hnQ1NpTGwKekZu
NDhKd3hnYlplcVhtbGhRVDdDeTY4ZU9FYmVIWHIxN2tTRGNHQmd3aXRRVnRtdDEyU0FZd0dYMVgv
ZG5DZWJmYkNBNjBVZ0FRZQp1T0NCQlNXVUVCTUhaVEg0bjFvUDhzVFVSeDZRZ0dBSUpJZ1E0VWND
akZjWEJlM0o5K0JNd0pVWUhIQUZTRURBQUMra2hWNUlWSFVsClFnY01XckRCQmk3YWVPQmlJbFR3
NEdUNm5XZ2lXRW1WVkVBQUF3eFFYRXBYbGNEQkJpeFpvQlVISWZSWWxtTHZIU2hiQ1I2d2Q2V0MK
RW02WVhZQVMxdVRYalhUSnNGaDNhdFlvbTVaUHV1ZkJCbFBHSnB1R1phYjNFNUVzT1FrYm5oOXRV
RnFESHBSMW9KUjBidUJrYkJhWQpZQUY3UytxcG5tb1BxdERlWXFRZHlxQUhUbHBRbG0wTVBpbENq
YUpGS2ltUW5BVW5Rd0w3RFNEd2dsc3RrdVpDWUM0c1FNS09DbWpnCndxWUljdERpcFN4STZlS0w2
VGxXcEpoKzdVWWJCd3NVeFZ5b0d6Umc2TENucW1maXRhb1NDVnlsQWlqZ1FZY01rSllBQXh6TUNt
QzEKeGlhMUxWaXFwUXBjQ2pzaEs0TUNtQzFwNmtBWlpJQ0N2aFBHdEsycSs1bEhIV3ZaRFZuU0Fu
YXRWQUJOSUdWd0FnQVpRQXhaVEFVcwp2Q0YyL3NwYkdBclhmWVNCREFFWVlBQ3hFUDIzN2dEUmtl
elpTZzhvcVhMSkZBZHc3Nmtyb2Z4eVJUSVlnQ1JJTXhmYjFia2FmYlFpClZkVVNsR2RISlEzZzRN
M0ZNdGx6MFZCSExmWFVWRmR0OWRWWVo2MzExbHgzN2ZYWHI2a0U5bXRQankwUmJCUmlGUEhZSzVG
YmtiNE8KczUxMEFCYjdXSlN2bm1YZlZGSUFEd2pnd1VYN2RwejNuaDhkbVNUVFVwZjBIdUprZ2xX
QUFRUUFqWFdnSnVESU9FdkhmdDJWazR1UgpMQy9ZSEVwZ2FRTGtFYTVtQStRUkxmZXJFQ3dRZ013
UHZnRG8wYUJIT0NxenM3TFFBSVJlUzZhU2Q1MHVocU1GMG00d2F3eStTVzQxClVEMmlwZGdIQ29n
d2dxVWxiTkRDQmk4SVlQbGR5bGROMlp5MU5XbWJCeVBFZVNCc0t5QnZiUGZlYzFDQkNCU0l3S1Y3
VHpiUUtRemwKejY2dHFyVXI1dDBHblBvQWptaWt2LzBWaVcwaThCUmFETFVBOS95SE9nZlUzRW9V
eEtBUElLaFUwaW1KQnZnMHVPVXhLRFFqeXBZTQpEdWU3MmhYc1dyNHhITzE2Vng2V1VDZENab3VL
NmtxNHdoamE4SVlPT015aERuZkl3eDc2OEljUkNRZ0FJZjQrVFdGNUlEWXNJREU1Ck9UWU5DbEJo
ZEhScElFSmhhV3hsZVNCdlppQkRlV0psY2lCSmMyeGhibVFOQ25CaGRIUnBRR041WW1WeWFYTnNa
UzVqYjIwQUlmN3YKVkdocGN5QkhTVVlnWm1sc1pTQjNZWE1nWVhOelpXMWliR1ZrSUhkcGRHZ2dS
MGxHSUVOdmJuTjBjblZqZEdsdmJpQlRaWFFnWm5KdgpiVG9OQ2cwS1FXeGphR1Z0ZVNCTmFXNWtk
Mjl5YTNNZ1NXNWpMZzBLVUM1UExpQkNiM2dnTlRBd0RRcENaV1YwYjI0c0lFOXVkR0Z5CmFXOE5D
a3d3UnlBeFFUQU5Da05CVGtGRVFTNE5DZzBLVkdocGN5QmpiMjF0Wlc1MElHSnNiMk5ySUhkcGJH
d2dibTkwSUdGd2NHVmgKY2lCcGJpQm1hV3hsY3lCamNtVmhkR1ZrSUhkcGRHZ2dZU0J5WldkcGMz
UmxjbVZrSUhabGNuTnBiMjRnYjJZZ1IwbEdJRU52Ym5OMApjblZqZEdsdmJpQlRaWFFBT3c9PQoK
</data>
<flag name="review"
          id="2616"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>