Files
MiPi_TEST/__pycache__/analyze_captures.cpython-312.pyc

133 lines
14 KiB
Plaintext
Raw Normal View History

2026-04-08 14:19:31 +01:00
<EFBFBD>
2026-04-09 10:29:53 +01:00
<00>_<EFBFBD>iK.<00><00><><00>dZddlZddlZddlZddlmZddlmZddlZddlm Z e ee
2026-04-09 08:45:57 +01:00
<EFBFBD>jdz <00>ddl m Z mZmZmZmZmZmZee
<EFBFBD>jdz Zee
<EFBFBD>jd z Zd
Zd Z dd ed edeeefdedeeeeff
d<11>Zdeedefd<13>Zdedededefd<17>Z ddeddfd<19>Z!dd<1A>Z"e#dk(re"<22>yy)a<>
2026-04-08 14:19:31 +01:00
analyze_captures.py
Groups MIPI oscilloscope CSV files by capture, runs csv_preprocessor on each,
then sends the compact summaries to the Claude API for trend analysis.
Usage:
python analyze_captures.py # all captures in ./data
python analyze_captures.py --last N # most recent N captures only
python analyze_captures.py --capture 0001 # single capture by number
2026-04-09 08:45:57 +01:00
<EFBFBD>N)<01>datetime)<01>Path)<01> load_dotenvz.env)<07> analyze_file<6C>analyze_lp_file<6C>analyze_1v8_file<6C>group_captures<65>ChannelMetrics<63> LPMetrics<63> V1V8Metrics<63>data<74>reportszclaude-opus-4-6uxYou are an expert in MIPI D-PHY signal integrity analysis. You will be given compact pre-processed summaries of oscilloscope captures from a MIPI CLK and DAT0 differential pair, plus 1.8 V supply rail measurements. The MIPI PHY (NXP i.MX 8M Mini) drives LP states from the 1.8 V VDDIO. Each capture has up to four data sets: sig (high-res HS quality), proto (long-window HS stats), lp (single-ended LP-11/LP-00/HS burst including SoT sequence), and pwr (1.8 V supply captured during the LP→HS transition). Analyse the data for trends, degradation, anomalies, or consistent spec concerns across captures. Be concise and actionable.<2E>ts<74>num<75>files<65>verbose<73>returnc<00>2<00>d|d<02>d|<00>d<04>g}g}dD]<5D>}||vr1|dk(r|jd|<06>d<08><03>n|jd|<06>d <09><03><00>8 |jd
<EFBFBD>rt||<00>}n"|dk(rt||<00>}nt ||<00>}|j|j <00><00>|j|<07>|rt |j <00><00><00><>d j|<04>|fS#t$r"}|jd|<06>d |<08><00><04>Yd }~<08><01>d }~wwxYw)z<>
2026-04-08 14:19:31 +01:00
Run the pre-processor on all CSV files for one capture.
Returns (text_summary, list_of_metrics).
Missing files produce a one-line note instead of crashing.
2026-04-09 08:45:57 +01:00
z === Capture <20>04d<34> z ===)<07> proto_clk<6C> proto_dat<61>sig_clk<6C>sig_dat<61>lp_clk<6C>lp_dat<61>pwr_1v8rz [z0] NOT CAPTURED (Rigol not connected or no droop)z ] MISSING<4E>lp_z ] ERROR: N<>
) <09>append<6E>
startswithrrr<00>summary<72>print<6E> Exception<6F>join) rrrr<00>lines<65> metrics_list<73>key<65>m<>excs <20>5/home/david-rice/Python/MiPi_Test/analyze_captures.py<70>process_capturer,3s(<00><00><1C>C<EFBFBD><03>9<EFBFBD>B<EFBFBD>r<EFBFBD>d<EFBFBD>$<24> /<2F> 0<>E<EFBFBD>57<35>L<EFBFBD>^<5E>4<><03> <0E>e<EFBFBD> <1B><12>i<EFBFBD><1F><15> <0C> <0C>s<EFBFBD>3<EFBFBD>%<25>'W<>X<>Y<><15> <0C> <0C>s<EFBFBD>3<EFBFBD>%<25>y<EFBFBD>1<>2<> <14> 4<><12>~<7E>~<7E>e<EFBFBD>$<24>#<23>E<EFBFBD>#<23>J<EFBFBD>/<2F><01><14> <09>!<21>$<24>U<EFBFBD>3<EFBFBD>Z<EFBFBD>0<><01> <20><15>s<EFBFBD><1A>,<2C><01> <11>L<EFBFBD>L<EFBFBD><11><19><19><1B> %<25> <18> <1F> <1F><01> "<22><16><15>a<EFBFBD>i<EFBFBD>i<EFBFBD>k<EFBFBD>"<22><>#4<>* <10>9<EFBFBD>9<EFBFBD>U<EFBFBD> <1B>\<5C> )<29>)<29><><19> 4<> <11>L<EFBFBD>L<EFBFBD>3<EFBFBD>s<EFBFBD>e<EFBFBD>9<EFBFBD>S<EFBFBD>E<EFBFBD>2<> 3<> 3<><33> 4<>s<00> B C+<02>+ D<05>4D<05>D<05> all_summariesc<00>0<00>dj|<00>}d|<01>d<03>S)Nz
2026-04-08 14:19:31 +01:00
2026-04-09 08:45:57 +01:00
u<EFBFBD>Below are pre-processed summaries of MIPI D-PHY captures. Each capture has three passes per lane (CLK and DAT0):
2026-04-08 14:19:31 +01:00
sig — high-res HS differential (rise/fall times)
proto — long-window HS differential (jitter, clock freq, amplitude)
lp — single-ended LP state capture (LP-11 voltage, SoT sequence, HS bursts)
2026-04-09 08:45:57 +01:00
pwr — 1.8 V supply rail captured during LP→HS transition (droop, ripple, spec)
2026-04-08 14:19:31 +01:00
2026-04-09 08:45:57 +01:00
uf
2026-04-08 14:19:31 +01:00
Please:
1. Identify any consistent spec concerns (HS voltage, LP-11 voltage, LP-low timing).
2026-04-09 08:45:57 +01:00
2. Highlight any trends over captures (amplitude drift, jitter, LP-11 voltage, 1.8 V droop, etc.).
2026-04-08 14:19:31 +01:00
3. Flag anomalies — missing LP transitions, short LP-low, unexpected burst counts.
2026-04-09 08:45:57 +01:00
4. Correlate 1.8 V supply droop/ripple with MIPI LP anomalies — does droop depth or ripple correlate with SoT timing violations, short LP-low plateaux, or LP-11 voltage drops? If pwr data is absent, note that supply correlation could not be assessed.
5. For any ERROR or WARNING lines in the summaries, explain the most likely cause (e.g. missing file, bad trigger, signal absent, probe issue, supply marginal) and what to check.
6. Provide specific, actionable recommendations to address all identified issues and anomalies.
7. Summarise overall signal health in 23 sentences.)r%)r-<00>bodys r+<00> build_promptr0Ys.<00><00> <11>;<3B>;<3B>}<7D> %<25>D<EFBFBD> e<01> <10>&<26> A<01>  A<01><06><00>analysis<69>
2026-04-08 15:42:51 +01:00
token_line<EFBFBD>keysc<00><><00>tjd<01><02>tj<00>}|j d<03>}t|z }t |<02>dk(r d|ddd<07><04>nd|ddd<07>d |d
dd<07><04>}|j d <0B>}d t d t fd<0E>}||<00>} d|<06>d|<07>d|<06>dt<00>d| <09>dtj|<01><00>d<15> }
|j|
2026-04-09 08:45:57 +01:00
d<16><17>|S)z:Write a timestamped HTML report to the reports/ directory.T)<01>exist_okz%Y%m%d_%H%M%S_analysis.html<6D><00>Capture rrz Captures u<><E28093><EFBFBD><EFBFBD><EFBFBD>z%Y-%m-%d %H:%M:%S<>textrc
2026-04-08 15:42:51 +01:00
<00><<00>tj|<00>}ddl}|jdd|<01>}|j d|<01>}g}|D]<5D>}|j <00>j <00>}|s<01>$|dj<00>jd<05>r\djd<07>|D<00><00>}|dj<00>dj<00>rdnd }|jd
2026-04-09 08:45:57 +01:00
|<08>d |<07>d |<08>d <0B><07><00><>|jd dj|<06>zdz<00><00><>dj|<04>S)Nrz \*\*(.+?)\*\*z<strong>\1</strong>z\n{2,})z1.z2.z3.<2E>-<2D>*<2A>c3<00>hK<00>|]*}|j<00>s<01>d|jd<01><00>d<02><03><01><00>,y<03>w)z<li>z0123456789.-* z</li>N)<02>strip<69>lstrip)<02>.0<EFBFBD>ls r+<00> <genexpr>z9save_html_report.<locals>.text_to_html.<locals>.<genexpr><3E>s0<00><00><><00>e<>Q<EFBFBD>[\<5C>[b<>[b<>[d<>$<24>q<EFBFBD>x<EFBFBD>x<EFBFBD>0@<40>'A<>&B<>%<25> H<>e<>s<00>2<01>2<01>ol<6F>ul<75><<3C>>z</z<p>z<br>z</p>r) <0C>html<6D>escape<70>re<72>sub<75>splitr@<00>
splitlinesrAr!r%<00>isdigitr ) r:<00>escapedrK<00>
paragraphs<EFBFBD>parts<74>parar&<00>items<6D>tags r+<00> text_to_htmlz&save_html_report.<locals>.text_to_html<6D>s <00><00><16>+<2B>+<2B>d<EFBFBD>#<23><07><11><14>&<26>&<26>)<29>+A<>7<EFBFBD>K<><07><17>X<EFBFBD>X<EFBFBD>i<EFBFBD><17>1<>
2026-04-08 15:42:51 +01:00
<EFBFBD><12><05><1E>
B<01>D<EFBFBD><18>J<EFBFBD>J<EFBFBD>L<EFBFBD>+<2B>+<2B>-<2D>E<EFBFBD><18><18><14>Q<EFBFBD>x<EFBFBD><EFBFBD><EFBFBD> <20>+<2B>+<2B>,H<>I<><1A><07><07>e<>RW<52>e<>e<><05>#<23>A<EFBFBD>h<EFBFBD>o<EFBFBD>o<EFBFBD>/<2F><01>2<>:<3A>:<3A><<3C>d<EFBFBD>$<24><03><15> <0C> <0C>q<EFBFBD><13><05>Q<EFBFBD>u<EFBFBD>g<EFBFBD>R<EFBFBD><03>u<EFBFBD>A<EFBFBD>6<>7<><15> <0C> <0C>U<EFBFBD>V<EFBFBD>[<5B>[<5B><15>%7<>7<>&<26>@<40>A<>
2026-04-09 08:45:57 +01:00
B<01><14>y<EFBFBD>y<EFBFBD><15><1F>r1uX<!DOCTYPE html>
2026-04-08 15:42:51 +01:00
<html lang="en">
<head>
<meta charset="UTF-8">
<title>MIPI Analysis — a<></title>
<style>
body { font-family: Arial, sans-serif; max-width: 900px; margin: 40px auto; padding: 0 20px; color: #222; }
h1 { color: #1a3a5c; border-bottom: 2px solid #1a3a5c; padding-bottom: 8px; }
.meta { color: #555; font-size: 0.95em; margin-top: -8px; margin-bottom: 24px; }
p { line-height: 1.6; }
ol, ul { line-height: 1.8; padding-left: 24px; }
li { margin: 4px 0; }
.tokens { color: #888; font-size: 0.8em; margin-top: 32px; border-top: 1px solid #ddd; padding-top: 8px; }
@media print { body { margin: 20px; } }
</style>
</head>
<body>
<h1>MIPI D-PHY Analysis Report</h1>
<p class="meta">
<strong>Generated:</strong> z) &nbsp;|&nbsp;
<strong>Scope:</strong> z) &nbsp;|&nbsp;
<strong>Model:</strong> z
</p>
z
<p class="tokens">z</p>
</body>
</html>
2026-04-09 08:45:57 +01:00
zutf-8)<01>encoding) <0B> REPORTS_DIR<49>mkdirr<00>now<6F>strftime<6D>len<65>str<74> CLAUDE_MODELrIrJ<00>
write_text) r2r3r4rZ<00>filename<6D>path<74> cap_range<67>date_strrV<00> body_html<6D> html_contents r+<00>save_html_reportrfqs#<00><00><0F><15><15>t<EFBFBD><15>$<24>
2026-04-08 15:42:51 +01:00
<12>,<2C>,<2C>.<2E>C<EFBFBD><12>|<7C>|<7C>9<>:<3A>H<EFBFBD> <16><18> !<21>D<EFBFBD> <0F>t<EFBFBD>9<EFBFBD><01>><3E> <13>4<EFBFBD><01>7<EFBFBD>1<EFBFBD>:<3A>c<EFBFBD>"<22>#<23><18><14>a<EFBFBD><17><11><1A>C<EFBFBD>(<28><03>D<EFBFBD><12>H<EFBFBD>Q<EFBFBD>K<EFBFBD><03>+<<3C> =<3D><0E>
<13>|<7C>|<7C>/<2F>0<>H<EFBFBD> <20>3<EFBFBD> <20>3<EFBFBD> <20>*<1D>X<EFBFBD>&<26>I<EFBFBD><1A>$<24><1B>%<1F> (<28>j<EFBFBD>)<1B>$<24>+<2B>&<1B>'<27>.<2E>)<01>
2026-04-09 08:45:57 +01:00
<EFBFBD> <0B> <13><17>;<3B>;<3B>z<EFBFBD>*<2A>+<2B>,<01>1<04>L<EFBFBD>8 <09>O<EFBFBD>O<EFBFBD>L<EFBFBD>7<EFBFBD>O<EFBFBD>3<> <0F>Kr1<00>lastc<00>F<00>tt<00>}|s td<01>yt|j <00><00>| d}tdt |<02><00>d<04><03>g}|D]+\}}t |||||f<00>\}}|j|<06><00>-t|<03>}tdt |<08>d<06>dt<00>d<08><05>tj<00>} | jjtd td
2026-04-08 14:19:31 +01:00
|d <0B>g<01> <0C>}
|
jd j } d|
j"j$<00>d|
2026-04-08 15:42:51 +01:00
j"j&<00>d<10>} d} td| <0A><00><02>td<13>t| <0A>t| <0B>td| <0C>d<15><03>t| dz<00>t)| | |<02>}td|<0E><00><02>y)z<>
2026-04-08 14:19:31 +01:00
Called by mgmt_worker after each file transfer.
Analyses the most recent `last` captures and prints the Claude report.
z[ANALYSIS] No captures found.Nz
[ANALYSIS] Processing z most-recent capture(s)...z[ANALYSIS] Sending <20>,z
2026-04-09 10:29:53 +01:00
chars to z...<2E> <00>user<65><02>role<6C>content<6E><04>model<65>
2026-04-09 08:45:57 +01:00
max_tokens<EFBFBD>system<65>messagesr<00>Tokens: <20> in / <20> out<75><============================================================rzCLAUDE ANALYSIS<49>(<28>)zNALYSIS] Report saved to )r <00>DATA_DIRr#<00>sortedr4r\r,r r0r^<00> anthropic<69> Anthropicrs<00>create<74> SYSTEM_PROMPTrnr:<00>usage<67> input_tokens<6E> output_tokensrf)rg<00>groupsr4r-rr<00> summary_text<78>_<>prompt<70>client<6E>messager2r3<00> separator<6F> report_paths r+<00> run_analysisr<73><00>s<><00><00>
2026-04-08 14:19:31 +01:00
<1C>H<EFBFBD> %<25>F<EFBFBD> <11> <0A>-<2D>.<2E><0E> <11>&<26>+<2B>+<2B>-<2D> <20>$<24><15><16> (<28>D<EFBFBD> <09> $<24>S<EFBFBD><14>Y<EFBFBD>K<EFBFBD>/I<>
J<EFBFBD>K<>!<21>M<EFBFBD><17>+<2B><07><02>C<EFBFBD>)<29>"<22>c<EFBFBD>6<EFBFBD>2<EFBFBD>s<EFBFBD>)<29>3D<33>E<><0F> <0C>a<EFBFBD><15><1C><1C>\<5C>*<2A>+<2B><1A>-<2D> (<28>F<EFBFBD> <09> <1F><03>F<EFBFBD> <0B>A<EFBFBD><EFBFBD>j<EFBFBD><1C><0E>c<EFBFBD>
2026-04-08 15:42:51 +01:00
J<EFBFBD>K<><17>!<21>!<21>#<23>F<EFBFBD><14>o<EFBFBD>o<EFBFBD>$<24>$<24>!<21><19>"<22>%<25>&<26>9<>:<3A> %<25><06>G<EFBFBD> <19><1F><1F><11>#<23>(<28>(<28>H<EFBFBD><1B>G<EFBFBD>M<EFBFBD>M<EFBFBD>6<>6<>7<>v<EFBFBD>g<EFBFBD>m<EFBFBD>m<EFBFBD>>Y<>>Y<>=Z<>Z^<5E>_<>J<EFBFBD><19>I<EFBFBD> <09>B<EFBFBD>y<EFBFBD>k<EFBFBD>
2026-04-08 14:19:31 +01:00
<1A><1B> <09>
<1B><1C> <09>)<29><14> <09>(<28>O<EFBFBD> <09>A<EFBFBD>j<EFBFBD>\<5C><11>
<1B><1C> <09>)<29>d<EFBFBD>
2026-04-08 15:42:51 +01:00
<1A><1B>#<23>8<EFBFBD>Z<EFBFBD><14>><3E>K<EFBFBD> <09> '<27> <0B>}<7D>
2026-04-09 08:45:57 +01:00
5<EFBFBD>6r1c<00>J<00>tjd<01><02>}|jdtddd<05><06>|jdtddd <09><06>|jd
2026-04-08 14:19:31 +01:00
d d <0C> <0A>|jdd d<0F> <0A>|j <00>}t t<00>}|s7tdt<00><00>tj<00><11>tjd<12>t|j<00><00>}|j<00>mt|j<00>}|D<00>cgc] }|d|k(s<01> |<05><02>}}|s>td|j<00>d<14>tj<00><11>tjd<12>|j<00>||j d}tdt!|<03><00>dt<00>d<17><05>g}|D]V\}}t#|||||f|j$<00><18>\} }
2026-04-08 15:42:51 +01:00
|j'| <09>|j$r<01>Etd|d<1A>d|<07><00><04><00>Xt)|<06>} |j*rtd<1C>t| <0B>ytdt!| <0B>d<1E>dt,<00>d <20><05>t/j0<00>} | j2j5t,d!t6d"| d#<23>g<01>$<24>} | j8d%j:}d&| j<j><00>d'| j<j@<00>d(<28>}d)}td|<10>d*|<10><00><04>t|<0E>td+|<0F>d,<2C><03>t|<10>tC|||<03>}td-|<11><00><02>ycc}w).Nz%Analyse MIPI CSV captures with Claude)<01> descriptionz--last<73>Nz'Process only the N most recent captures)<04>type<70>default<6C>metavar<61>helpz --capture<72>NUMz+Process a single capture number (e.g. 0001)z --verbose<73>
2026-04-09 08:45:57 +01:00
store_truez"Print per-file summaries to stdout)<02>actionr<6E>z --dry-runz5Print summaries and prompt but do not call Claude APIzNo CSV files found in )<01>filer7r8z not found.z Processing z capture(s) from r)rz Processed capture rrz,
2026-04-08 14:19:31 +01:00
--- Prompt that would be sent to Claude ---z
2026-04-09 08:45:57 +01:00
Sending riz characters to z...
rjrkrlrorrtrurvrwz
2026-04-08 14:19:31 +01:00
CLAUDE ANALYSIS
2026-04-09 08:45:57 +01:00
rxryz
Report saved to )"<22>argparse<73>ArgumentParser<65> add_argument<6E>intr]<00>
parse_argsr rzr#<00>sys<79>stderr<72>exitr{r4<00>capturergr\r,rr r0<00>dry_runr^r|r}rsr~rrnr:r<>r<>r<>rf)<12>parser<65>argsr<73>r4<00>
target_num<EFBFBD>kr-rrr<>r<>r<>r<>r<>r2r3r<>r<>s r+<00>mainr<6E><00>s<><00><00> <15> $<24> $<24>1X<31> Y<>F<EFBFBD>
2026-04-08 14:19:31 +01:00
<EFBFBD><17><17><08>#<23><04>c<EFBFBD>F<><18>H<01>
<EFBFBD><17><17> <0B>#<23><04>e<EFBFBD>J<><18>L<01>
<EFBFBD><17><17> <0B>L<EFBFBD>A<><18>C<01>
<EFBFBD><17><17> <0B>L<EFBFBD>T<><18>V<01> <11> <1C> <1C> <1E>D<EFBFBD><1C>H<EFBFBD> %<25>F<EFBFBD> <11> <0A>&<26>x<EFBFBD>j<EFBFBD>1<><03>
<EFBFBD>
<EFBFBD>C<> <0B><08><08><11> <0B> <11>&<26>+<2B>+<2B>-<2D> <20>D<EFBFBD> <0B>|<7C>|<7C><1F><18><14><1C><1C>&<26>
<EFBFBD><1F>6<>a<EFBFBD>1<EFBFBD>Q<EFBFBD>4<EFBFBD>:<3A>#5<><01>6<><04>6<><13> <11>H<EFBFBD>T<EFBFBD>\<5C>\<5C>N<EFBFBD>+<2B>6<>S<EFBFBD>Z<EFBFBD>Z<EFBFBD> H<> <0F>H<EFBFBD>H<EFBFBD>Q<EFBFBD>K<EFBFBD> <0B>y<EFBFBD>y<EFBFBD><1C><13>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>J<EFBFBD>K<EFBFBD> <20><04> <09>K<EFBFBD><03>D<EFBFBD> <09>{<7B>"3<>H<EFBFBD>:<3A>R<EFBFBD>
@<40>A<> "<22>M<EFBFBD><17>:<3A><07><02>C<EFBFBD>)<29>"<22>c<EFBFBD>6<EFBFBD>2<EFBFBD>s<EFBFBD>)<29>3D<33>d<EFBFBD>l<EFBFBD>l<EFBFBD>[<5B><0F> <0C>a<EFBFBD><15><1C><1C>\<5C>*<2A><13>|<7C>|<7C> <11>(<28><13>S<EFBFBD> <09><12>B<EFBFBD>4<EFBFBD>8<> 9<> :<3A><1A>-<2D> (<28>F<EFBFBD> <0B>|<7C>|<7C> <0A>=<3D>><3E> <0A>f<EFBFBD> <0A><0E>
<EFBFBD>J<EFBFBD>s<EFBFBD>6<EFBFBD>{<7B>1<EFBFBD>o<EFBFBD>_<EFBFBD>\<5C>N<EFBFBD>%<25>
2026-04-08 15:42:51 +01:00
H<EFBFBD>I<><18>"<22>"<22>$<24>F<EFBFBD><15><EFBFBD><EFBFBD>%<25>%<25>!<21><19>"<22>%<25>&<26>9<>:<3A> &<26><06>G<EFBFBD> <19><1F><1F><11>#<23>(<28>(<28>H<EFBFBD><1B>G<EFBFBD>M<EFBFBD>M<EFBFBD>6<>6<>7<>v<EFBFBD>g<EFBFBD>m<EFBFBD>m<EFBFBD>>Y<>>Y<>=Z<>Z^<5E>_<>J<EFBFBD><19>I<EFBFBD>
2026-04-08 14:19:31 +01:00
<EFBFBD>B<EFBFBD>y<EFBFBD>k<EFBFBD>,<2C>Y<EFBFBD>K<EFBFBD>
8<EFBFBD>9<> <09>(<28>O<EFBFBD> <09>A<EFBFBD>j<EFBFBD>\<5C><11>
2026-04-08 15:42:51 +01:00
<1B><1C> <09>)<29><14>#<23>8<EFBFBD>Z<EFBFBD><14>><3E>K<EFBFBD> <09> <1E>{<7B>m<EFBFBD>
,<2C>-<2D><>_7s <00> L <04>L <04>__main__)F)<01>
2026-04-09 08:45:57 +01:00
)rN)$<24>__doc__r<5F>rIr<>r<00>pathlibrr|<00>dotenvr<00>__file__<5F>parent<6E>csv_preprocessorrrrr r
r r rzrXr^rr]r<><00>dict<63>bool<6F>tuple<6C>listr,r0rfr<>r<><00>__name__<5F>r1r+<00><module>r<>s=<00><01>
2026-04-08 15:42:51 +01:00
<04><10> <0B>
2026-04-09 08:45:57 +01:00
<EFBFBD><1D><18><10><1E> <0B>D<EFBFBD><18>N<EFBFBD> !<21> !<21>F<EFBFBD> *<2A>+<2B><02><02><02>
<13>8<EFBFBD>n<EFBFBD>#<23>#<23>f<EFBFBD>,<2C><08><12>8<EFBFBD>n<EFBFBD>#<23>#<23>i<EFBFBD>/<2F> <0B>"<22> <0C> 2<><0E>,<1A> #*<2A> <0B>#*<2A> <0C>#*<2A> <10><03>T<EFBFBD> <09>?<3F>#*<2A><12> #*<2A>
 <0B>3<EFBFBD><04>^<5E>$<24> $<24>%<25> #*<2A>L<06><04>S<EFBFBD> <09><06>c<EFBFBD><06>0C<10>s<EFBFBD>C<10><03>C<10>4<EFBFBD>C<10>D<EFBFBD>C<10>T*7<>s<EFBFBD>*7<>D<EFBFBD>*7<>ZE.<2E>P <0C>z<EFBFBD><19><08>F<EFBFBD>r1