Pendahuluan
Penelitian ini dilakukan untuk mengetahui faktor-faktor yang memengaruhi
penjualan produk Caffe Mocha pada dataset Coffee
Chain. Caffe Mocha dipilih karena merupakan salah satu
jenis minuman dalam kategori Espresso, yang memiliki nilai
penjualan relatif tinggi dibandingkan produk kopi biasa. Selain itu
Caffe Mocha dipilih karena memiliki jumlah transaksi yang cukup
besar (480 entri), sehingga model yang dibangun lebih stabil. Tujuan
dari penelitian ini adalah untuk memahami variabel apa saja yang secara
signifikan memengaruhi besarnya penjualan Caffe Mocha dan
bagaimana hubungan antara variabel-variabel tersebut.
Dalam analisis ini, variabel yang digunakan sebagai variabel dependen
(Y) adalah Sales (dollar), yaitu nilai total penjualan
dari produk. Sales dipilih karena mewakili performa kinerja
penjualan secara langsung. Sementara itu, variabel independen (X) yang
digunakan meliputi Marketing, Inventory, dan COGS
(Cost of Goods Sold). Marketing (dollar)
mewakili besarnya anggaran promosi yang dapat meningkatkan penjualan,
Inventory (unit) menunjukkan stok yang tersedia yang
bisa memengaruhi kemampuan memenuhi permintaan, dan COGS
(dollar) merepresentasikan biaya produksi yang juga dapat
memengaruhi margin dan strategi harga. Ketiga variabel ini memiliki
kaitan yang logis dalam konteks manajemen penjualan produk.
Untuk menganalisis hubungan antar variabel, metode yang digunakan adalah
regresi linear berganda dengan estimasi robust Least Trimmed
Squares (LTS). Metode LTS dipilih karena memiliki keunggulan dalam
menghadapi data yang mungkin mengandung pencilan (outlier) atau
ketidakteraturan lainnya, yang bisa memengaruhi akurasi model regresi
biasa. Dengan menggunakan pendekatan robust, hasil analisis
diharapkan tetap stabil dan andal meskipun terdapat observasi yang
ekstrem dalam data.
Landasan Teori
Uji Asumsi Klasik
Uji asumsi klasik dilakukan untuk melihat apakah model regresi yang
diperoleh memenuhi asumsi klasik sehingga dapat dikatakan bahwa model
yang dihasilkan bersifat BLUE (Best Linear Unbiased Estimator).
Jika ada asumsi yang dilanggar, maka tidak dapat digunakan. Maka dari
itu, digunakan regresi robust.
Uji Normalitas
Untuk menguji apakah dalam model regresi variabel pengganggu atau
residual memiliki distribusi normal atau tidak maka digunakan uji
Kolmogorov Smirnov Test. Keputusan untuk menolak \(H_0\) jika p-value kurang dari
tingkat signifikansi (𝛼) 5%.
Uji Heterokedastisitas
Uji Heteroskedastisitas bertujuan untuk mengetahui apakah variansi galat
bersifat homoskedastisitas atau heteroskedastisitas. Heteroskedastisitas
akan menyebabkan penaksiran koefisien-koefisien regresi menjadi tidak
efisien dan hasil taksiran dapat menjadi kurang atau melebihi dari
semestinya. Dengan demikian, agar koefisien-koefisien regresi tidak
salah taksir maka heteroskedastisitas harus dihilangkan. Salah satu
metode uji heteroskedastisitas adalah uji Breusch-Pagan.
Uji Multikolinearitas
Untuk melakukan uji multikolinearitas, dapat digunakan metode
Variance Inflation Factor (VIF). VIF mengukur sejauh mana
variabel independen terkait erat dengan variabel lain dalam model
regresi. Semakin tinggi nilai VIF, semakin tinggi tingkat
multikolinearitas. Nilai VIF>10 menunjukkan adanya multikolinearitas
yang signifikan.
Uji Autokorelasi
Uji autokorelasi atau uji non-autokorelasi dalam konteks regresi adalah
pengujian apakah terdapat hubungan linier antara nilai residual pada
suatu observasi dengan nilai residual pada observasi
sebelumnya.Pengujian autokorelasi dapat dilakukan dengan uji
Durbin-Watson
Uji Linearitas
Uji linearitas digunakan untuk melihat apakah model yang digunakan
memiliki hubungan linear atau tidak. Uji linearitas sangat penting dalam
regresi linier karena model regresi linier mengasumsikan bahwa hubungan
antara variabel dependen dan independen dapat dijelaskan dengan garis
lurus.
Regresi Robust Estimasi LTS
Least Trimmed Square (LTS) diusulkan oleh Rousseuw (1984)
sebagai alternatif robust untuk mengatasi kelemahan MKT, yaitu dengan
menggunakan sebanyak ℎ (ℎ ≤ 𝑛) kuadrat sesatan yang diurutkan nilainya
(Rousseuw, 1984). Rumus pada estimasi LTS sebagai berikut :
\[
Q_{\mathrm{LTS}} = \sum_{i=1}^{h} e_i^2
\]
Keterangan:
- \(h = \left\lfloor \tfrac{n}{2}
\right\rfloor + \left\lfloor \tfrac{k+2}{2} \right\rfloor\)
- \(e_i = \hat y_i - X_i^\
\hat\beta_0\)
Menurut Rousseeuw dan Hubert (1997) estimator untuk LTS dapat
didapatkan dengan cara:
\[
s_{\mathrm{LTS}}
= d_{h,n}\,
\sqrt{\frac{1}{h}\sum_{i=1}^{h} e_i^2}
\]
dengan:
- \(d_{h,n} = \displaystyle \frac{1}{\sqrt{\,1
- \dfrac{2n}{h\,c_{h,n}}\;\phi\bigl(1/c_{h,n}\bigr)\,}}\)
- \(c_{h,n} = \displaystyle
\frac{1}{\Phi^{-1}\!\Bigl(\tfrac{h + n}{2n}\Bigr)}\)
Setelah didapatkan nilai \(s_{LTS}\)
lalu menghitung pembobot \(w_i\) dengan
rumus:
\[
w_i \;=\;
\begin{cases}
0, & \text{jika } \Bigl|\dfrac{e_i}{s_{\mathrm{LTS}}}\Bigr| >
2.5,\\[0.5em]
1, & \text{lainnya.}
\end{cases}
\]
Source Code
Library yang digunakan
## Loading required package: carData
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(lmtest)
library(robustbase)
library(car)
library(MASS)
library(lmtest)
library(readxl)
Import Data
caffeemocha <- read_excel("D:/caffeemocha.xlsx")
caffeemocha
## # A tibble: 480 × 4
## Sales Marketing Inventory COGS
## <dbl> <dbl> <dbl> <dbl>
## 1 134 15 456 54
## 2 546 77 1310 234
## 3 43 4 777 17
## 4 123 14 821 50
## 5 341 47 1091 170
## 6 150 21 965 69
## 7 180 68 522 75
## 8 190 72 551 79
## 9 126 57 435 63
## 10 90 34 261 37
## # ℹ 470 more rows
#MEMBUAT DATA FRAME
data<-data.frame(caffeemocha)
Statsitik Deskriptif
#Statistik Deskriptif
summary(data)
## Sales Marketing Inventory COGS
## Min. : 39.0 Min. : 4.00 Min. : 251.0 Min. : 15.00
## 1st Qu.:104.8 1st Qu.: 15.00 1st Qu.: 432.2 1st Qu.: 44.00
## Median :133.0 Median : 28.50 Median : 615.0 Median : 59.00
## Mean :176.9 Mean : 41.01 Mean : 756.2 Mean : 79.15
## 3rd Qu.:227.0 3rd Qu.: 53.00 3rd Qu.: 897.2 3rd Qu.:103.25
## Max. :687.0 Max. :156.00 Max. :3641.0 Max. :295.00
Model Prediksi MKT
MKT=lm(Sales~.,data=data)
summary(MKT)
##
## Call:
## lm(formula = Sales ~ ., data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -174.46 -12.82 1.39 20.74 79.57
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 44.851196 3.143345 14.27 <2e-16 ***
## Marketing -0.685188 0.063286 -10.83 <2e-16 ***
## Inventory -0.082956 0.004127 -20.10 <2e-16 ***
## COGS 2.815921 0.042934 65.59 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 35.85 on 476 degrees of freedom
## Multiple R-squared: 0.9241, Adjusted R-squared: 0.9236
## F-statistic: 1930 on 3 and 476 DF, p-value: < 2.2e-16
Jadi model prediksi MKT nya : \[
\widehat{\text{Sales}}
\;=\;
44.851196
\;-\;0.685188\,\mathrm{Marketing}
\;-\;0.082956\,\mathrm{Inventory}
\;+\;2.815921\,\mathrm{COGS}
\;+\varepsilon_i
\]
Uji signifikansi
Uji Simultan
\[
\begin{aligned}[l]
H_0:\;&\;\beta_{\mathrm{Marketing}} = \beta_{\mathrm{Inventory}} =
\beta_{\mathrm{COGS}} = 0,\\
H_1:\;&\;\text{setidaknya salah satu }\beta_i \neq 0.
\end{aligned}
\]
\[
\begin{aligned}[l]
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
p\text{-value} &= 2.2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\\\text{maka H0 ditolak}
\\\text{yang berarti bahwa paling tidak terdapat satu dari variabel
Marketing (X1), Inventory (X2), COGS (X3) berpengaruh signifikan
terhadap Sales}
}
\]
Uji Parsial
Uji Parsial Variabel Marketing : \[
\begin{aligned}[l]
H_0:\;&\beta_{\mathrm{Marketing}} = 0,\\
H_1:\;&\beta_{\mathrm{Marketing}} \neq 0,\\
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
t_{\mathrm{Marketing}} &= -10.83,\\
p\text{-value} &< 2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\beta_{\mathrm{Marketing}}\text{ signifikan terhadap Sales.}
}
\] Uji Parsial Inventory \[
\begin{aligned}[l]
H_0:\;&\beta_{\mathrm{Inventory}} = 0,\\
H_1:\;&\beta_{\mathrm{Inventory}} \neq 0,\\
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
t_{\mathrm{Inventory}} &= -20.10,\\
p\text{-value} &< 2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\beta_{\mathrm{Inventory}}\text{ signifikan terhadap Sales.}
}
\] Uji Parsial COGS \[
\begin{aligned}[l]
H_0:\;&\beta_{\mathrm{COGS}} = 0,\\
H_1:\;&\beta_{\mathrm{COGS}} \neq 0,\\
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
t_{\mathrm{COGS}} &= 65.59,\\
p\text{-value} &< 2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\beta_{\mathrm{COGS}}\text{ signifikan terhadap Sales.}
}
\]
Uji asumsi
Uji Normalitas
#Menggunakan Uji Kolmogorov Smirnov
ks.test(MKT$residuals, 'pnorm')
## Warning in ks.test.default(MKT$residuals, "pnorm"): ties should not be present
## for the Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: MKT$residuals
## D = 0.4857, p-value < 2.2e-16
## alternative hypothesis: two-sided
\[
\begin{aligned}[l]
H_0:\;&\text{Residual mengikuti distribusi normal},\\
H_1:\;&\text{Residual tidak mengikuti distribusi normal},\\
\alpha &= 0.05,\\
\text{Tolak }H_0&\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
p\text{-value} &< 2.2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\text{maka residual tidak berdistribusi normal.}
}
\]
Uji Heterokedastisitas
#Menggunakan Uji Breusch-Pagan
bptest(MKT)
##
## studentized Breusch-Pagan test
##
## data: MKT
## BP = 133.18, df = 3, p-value < 2.2e-16
\[
\begin{aligned}[l]
H_0:\;&\text{Tidak terdapat Heterokedastisitas},\\
H_1:\;&\text{Terdapat Heterokedastisitas},\\
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
\mathrm{BP} &= 133.18,\\
\mathrm{df} &= 3,\\
p\text{-value} &< 2.2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\text{maka H}_0\text{ ditolak maka terdapat heteroskedastisitas.}
}
\]
Uji Autokorelasi
#Menggunakan Uji Durbin Watson
dwtest(MKT)
##
## Durbin-Watson test
##
## data: MKT
## DW = 1.7342, p-value = 0.001815
## alternative hypothesis: true autocorrelation is greater than 0
\[
\begin{aligned}[l]
H_0:\;&\rho = 0 \quad(\text{tidak ada autokorelasi}),\\
H_1:\;&\rho \neq 0 \quad(\text{ada autokorelasi}),\\
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
\mathrm{DW} &= 1.7342,\\
p\text{-value} &= 0.001815.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
H_0\text{ ditolak maka terdapat autokorelasi residual.}
}
\]
Uji Multikolinearitas
#Menggunakan Uji VIF
vif(MKT)
## Marketing Inventory COGS
## 1.883039 1.597174 2.194673
\[
\begin{aligned}[l]
H_0:\;&\text{Tidak terdapat multikolinearitas antar variabel},\\
H_1:\;&\text{Terdapat multikolinearitas antar variabel},\\
\text{Kriteria: }&\text{tolak }H_0\;\text{jika VIF} > 10.
\end{aligned}
\]
\[
\begin{aligned}[l]
\mathrm{VIF}(\mathrm{Marketing}) &= 1.8830,\\
\mathrm{VIF}(\mathrm{Inventory}) &= 1.5972,\\
\mathrm{VIF}(\mathrm{COGS}) &= 2.1947.
\end{aligned}
\]
\[
\boxed{
\text{Karena semua VIF}<10,\;
\text{maka gagal tolak }H_0\;\Longrightarrow\;
\text{tidak ada multikolinearitas.}
}
\]
Uji Liniearitas
# Uji Asumsi Linearitas menggunakan Ramsey RESET
ramsey_test <- resettest(MKT, power = 2)
ramsey_test
##
## RESET test
##
## data: MKT
## RESET = 43.833, df1 = 1, df2 = 475, p-value = 9.691e-11
\[
\begin{aligned}[l]
H_0:\;&\text{Model memenuhi asumsi linearitas},\\
H_1:\;&\text{Model tidak memenuhi asumsi linearitas},\\
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
p\text{-value} &= 9.691\times10^{-11}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
H_0\text{ ditolak maka model tidak memenuhi asumsi linearitas.}
}
\]
Deteksi Outlier

Dilihat dari boxplot tersebut dapat disimpulkan terdapat outlier pada
data.
dffits_values <- dffits(MKT)
nilai_pembanding <- 2 * (sqrt(4/480))
cat("\nNilai Pembanding DFFITS:", nilai_pembanding)
##
## Nilai Pembanding DFFITS: 0.1825742
jumlah_outlier <- sum(abs(dffits_values) > nilai_pembanding)
cat("\n\nJumlah Data Outlier:", jumlah_outlier)
##
##
## Jumlah Data Outlier: 40
Model Regresi Robust Estimasi LTS
model_robust <- ltsReg(Sales ~ Marketing + Inventory + COGS, data = data)
model_robust
##
## Call:
## ltsReg.formula(formula = Sales ~ Marketing + Inventory + COGS, data = data)
##
## Coefficients:
## Intercept Marketing Inventory COGS
## 2.397061 -0.049805 0.001041 2.409433
##
## Scale estimate 9.212
##
## Call:
## ltsReg.formula(formula = Sales ~ Marketing + Inventory + COGS,
## data = data)
##
## Residuals (from reweighted LS):
## Min 1Q Median 3Q Max
## -20.605 -1.707 0.000 2.567 20.427
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## Intercept 2.397061 1.079482 2.221 0.0269 *
## Marketing -0.049805 0.019446 -2.561 0.0108 *
## Inventory 0.001041 0.001946 0.535 0.5931
## COGS 2.409433 0.016090 149.747 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.356 on 395 degrees of freedom
## Multiple R-Squared: 0.9943, Adjusted R-squared: 0.9942
## F-statistic: 2.292e+04 on 3 and 395 DF, p-value: < 2.2e-16
Jadi model regresi robust nya : \[
\widehat{\text{Sales}}
\;=\;
2.397061
\;-\;0.049805\,\mathrm{Marketing}
\;+\;0.001041\,\mathrm{Inventory}
\;+\;2.409433\,\mathrm{COGS}
\;+\varepsilon_i
\]
Artinya:
Intercept (2,3971): ketika COGS, Marketing, dan
Inventory semuanya bernilai nol, model memprediksi Sales sebesar sekitar
2,40 unit.
COGS (2,4094): setiap kenaikan 1 satuan dalam
COGS (biaya pokok penjualan) dikaitkan dengan peningkatan Sales sebesar
kira-kira 2,41 satuan, menandakan bahwa COGS memiliki pengaruh positif
dan terbesar di antara ketiga prediktor.
Marketing (−0,0498): setiap tambahan 1 satuan
belanja Marketing diperkirakan menurunkan Sales sebesar 0,05 satuan—efek
negatif yang relatif kecil, mungkin karena peningkatan pengeluaran
pemasaran pada titik tertentu tidak selalu langsung mendorong
penjualan.
Inventory (0,0010): koefisien positif tapi
sangat kecil, menunjukkan bahwa perubahan Inventory hampir tidak
berpengaruh terhadap Sales dalam rentang data ini.
Secara keseluruhan, COGS adalah pendorong utama penjualan, sementara
Marketing dan Inventory memberikan efek yang jauh lebih lemah, bahkan
Marketing sedikit menurunkan prediksi Sales dan Inventory nyaris tidak
berdampak.
Uji Signifikansi Model
Uji Simultan
\[
\begin{aligned}[l]
H_0:\;&\;\beta_{\mathrm{Marketing}} = \beta_{\mathrm{Inventory}} =
\beta_{\mathrm{COGS}} = 0,\\
H_1:\;&\;\text{setidaknya salah satu }\beta_i \neq 0.
\end{aligned}
\]
\[
\begin{aligned}[l]
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
p\text{-value} &= 2.2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\\\text{maka H0 ditolak}
\\\text{yang berarti bahwa paling tidak terdapat satu dari variabel
Marketing (X1), Inventory (X2), COGS (X3) berpengaruh signifikan
terhadap Sales}
}
\]
Uji Parsial
Uji Parsial Marketing \[
\begin{aligned}[l]
H_0:\;&\beta_{\mathrm{Marketing}} = 0,\\
H_1:\;&\beta_{\mathrm{Marketing}} \neq 0.
\end{aligned}
\]
\[
\begin{aligned}[l]
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
t(395) &= -2.561,\\
p\text{-value} &= 0.0108.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\beta_{\mathrm{Marketing}}\text{ signifikan terhadap Sales.}
}
\] Uji Parsial Inventory: \[
\begin{aligned}[l]
H_0:\;&\beta_{\mathrm{Inventory}} = 0,\\
H_1:\;&\beta_{\mathrm{Inventory}} \neq 0.
\end{aligned}
\]
\[
\begin{aligned}[l]
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
t(395) &= 0.535,\\
p\text{-value} &= 0.5931.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}\ge 0.05,\;
\beta_{\mathrm{Inventory}}\text{ tidak signifikan terhadap Sales.}
}
\] Uji Parsial COGS: \[
\begin{aligned}[l]
H_0:\;&\beta_{\mathrm{COGS}} = 0,\\
H_1:\;&\beta_{\mathrm{COGS}} \neq 0.
\end{aligned}
\]
\[
\begin{aligned}[l]
\alpha &= 0.05,\\
\text{Tolak }H_0 &\quad\text{jika }p\text{-value}<\alpha.
\end{aligned}
\]
\[
\begin{aligned}[l]
t(395) &= 149.747,\\
p\text{-value} &< 2\times10^{-16}.
\end{aligned}
\]
\[
\boxed{
\text{Karena }p\text{-value}<0.05,\;
\beta_{\mathrm{COGS}}\text{ signifikan terhadap Sales.}
}
\]
Interpretasi
Secara simultan uji F menunjukkan bahwa secara keseluruhan ketiga
prediktor yaitu COGS, Marketing, dan Inventory secara
bersama‐sama berpengaruh signifikan terhadap Sales
(F(3,395)=22920, p-value<2.2×10⁻¹⁶), artinya model regresi robust LTS
ini layak digunakan untuk memprediksi Sales. Namun, pada uji parsial
hanya COGS (t=149.747, p<2×10⁻¹⁶) dan
Marketing (t=–2.561, p=0.0108) yang terbukti signifikan
secara individual, sedangkan Inventory (t=0.535,
p=0.5931) tidak signifikan; ini menandakan bahwa peningkatan COGS dan
perubahan strategi Marketing benar‐benar berdampak pada penjualan,
sementara variasi Inventory dalam rentang data ini tidak memberikan
kontribusi yang berarti.
Kesimpulan
Dari analisis regresi MKT awal, ditemukan bahwa model OLS signifikan
secara simultan namun melanggar beberapa asumsi klasik (normalitas,
heteroskedastisitas, autokorelasi, dan linearitas), meskipun
multikolinearitas tidak menjadi isu besar. Dengan melakukan estimasi
robust LTS, model menjadi tahan terhadap pencilan dan menghasilkan
persamaan
\[
\widehat{\text{Sales}} = 2{,}3971 - 0{,}0498\,\text{Marketing} +
0{,}0010\,\text{Inventory} + 2{,}4094\,\text{COGS} + \varepsilon_i.
\]
Artinya:
- COGS (biaya pokok penjualan) punya pengaruh paling
besar: naik setengah dolar COGS, penjualan naik sekitar $2,40.
- Marketing (anggaran iklan) sedikit menurunkan
penjualan mungkin karena kampanye belum tepat sasaran.
- Inventory (stok barang) hampir tidak
berpengaruh.
Dari sudut pandang bisnis, hasil ini menunjukkan bahwa CaffeMocha
sebaiknya fokus mengatur ulang biaya produksi dan memperbaiki cara
promosi. Mengeluarkan biaya lebih untuk iklan ternyata belum tentu
menaikkan penjualan, jadi strategi pemasarannya mungkin perlu
dievaluasi. Sementara itu, menambah stok barang juga tidak banyak
pengaruhnya terhadap penjualan.Karena model LTS membuang atau
mengecilkan pengaruh angka penjualan yang sangat tinggi atau sangat
rendah, hasilnya lebih mencerminkan kondisi rata-rata sehari-hari.
Dengan begitu, rencana belanja dan produksi bisa disusun dengan lebih
mantap, tanpa khawatir dipengaruhi data yang outlier.
LS0tDQp0aXRsZTogIkFOQUxJU0lTIFJFR1JFU0kgUk9CVVNUIERFTkdBTiBFU1RJTUFTSSBMVFMgUEFEQSBQRU5KVUFMQU4gUFJPRFVLIENBRkZFTU9DSEEiDQphdXRob3I6ICI8Y2VudGVyPkZheXp1bCBIYXEgTS5CIChNMDcyMzAzNik8L2NlbnRlcj4gIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0KY3NzOiAiY3VzdG9tLmNzcyINCm91dHB1dDogb3BlbmludHJvOjpsYWJfcmVwb3J0DQotLS0NCg0KIyBQZW5kYWh1bHVhbg0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAxZW07Ij4NCiAgPGltZyBzcmM9ImNvZmZlZS5naWYiIGFsdD0iQ2FmZmUgTW9jaGEgR0lGIiB3aWR0aD0iNDAwIiAvPg0KPC9kaXY+DQoNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KUGVuZWxpdGlhbiBpbmkgZGlsYWt1a2FuIHVudHVrIG1lbmdldGFodWkgZmFrdG9yLWZha3RvciB5YW5nIG1lbWVuZ2FydWhpIHBlbmp1YWxhbiBwcm9kdWsgKkNhZmZlIE1vY2hhKiBwYWRhIGRhdGFzZXQgKkNvZmZlZSBDaGFpbiouICpDYWZmZSBNb2NoYSogZGlwaWxpaCBrYXJlbmEgbWVydXBha2FuIHNhbGFoIHNhdHUgamVuaXMgbWludW1hbiBkYWxhbSBrYXRlZ29yaSAqRXNwcmVzc28qLCB5YW5nIG1lbWlsaWtpIG5pbGFpIHBlbmp1YWxhbiByZWxhdGlmIHRpbmdnaSBkaWJhbmRpbmdrYW4gcHJvZHVrIGtvcGkgYmlhc2EuIFNlbGFpbiBpdHUgKkNhZmZlIE1vY2hhKiBkaXBpbGloIGthcmVuYSBtZW1pbGlraSBqdW1sYWggdHJhbnNha3NpIHlhbmcgY3VrdXAgYmVzYXIgKDQ4MCBlbnRyaSksIHNlaGluZ2dhIG1vZGVsIHlhbmcgZGliYW5ndW4gbGViaWggc3RhYmlsLiBUdWp1YW4gZGFyaSBwZW5lbGl0aWFuIGluaSBhZGFsYWggdW50dWsgbWVtYWhhbWkgdmFyaWFiZWwgYXBhIHNhamEgeWFuZyBzZWNhcmEgc2lnbmlmaWthbiBtZW1lbmdhcnVoaSBiZXNhcm55YSBwZW5qdWFsYW4gKkNhZmZlIE1vY2hhKiBkYW4gYmFnYWltYW5hIGh1YnVuZ2FuIGFudGFyYSB2YXJpYWJlbC12YXJpYWJlbCB0ZXJzZWJ1dC4NCjwvcD4gDQoNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KRGFsYW0gYW5hbGlzaXMgaW5pLCB2YXJpYWJlbCB5YW5nIGRpZ3VuYWthbiBzZWJhZ2FpIHZhcmlhYmVsIGRlcGVuZGVuIChZKSBhZGFsYWggKlNhbGVzKiAoKmRvbGxhciopLCB5YWl0dSBuaWxhaSB0b3RhbCBwZW5qdWFsYW4gZGFyaSBwcm9kdWsuICpTYWxlcyogZGlwaWxpaCBrYXJlbmEgbWV3YWtpbGkgcGVyZm9ybWEga2luZXJqYSBwZW5qdWFsYW4gc2VjYXJhIGxhbmdzdW5nLiBTZW1lbnRhcmEgaXR1LCB2YXJpYWJlbCBpbmRlcGVuZGVuIChYKSB5YW5nIGRpZ3VuYWthbiBtZWxpcHV0aSAqTWFya2V0aW5nKiwgKkludmVudG9yeSosIGRhbiBDT0dTICgqQ29zdCBvZiBHb29kcyBTb2xkKikuICpNYXJrZXRpbmcqICgqZG9sbGFyKikgbWV3YWtpbGkgYmVzYXJueWEgYW5nZ2FyYW4gcHJvbW9zaSB5YW5nIGRhcGF0IG1lbmluZ2thdGthbiBwZW5qdWFsYW4sICpJbnZlbnRvcnkqICgqdW5pdCopIG1lbnVuanVra2FuIHN0b2sgeWFuZyB0ZXJzZWRpYSB5YW5nIGJpc2EgbWVtZW5nYXJ1aGkga2VtYW1wdWFuIG1lbWVudWhpIHBlcm1pbnRhYW4sIGRhbiAqQ09HUyogKCpkb2xsYXIqKSBtZXJlcHJlc2VudGFzaWthbiBiaWF5YSBwcm9kdWtzaSB5YW5nIGp1Z2EgZGFwYXQgbWVtZW5nYXJ1aGkgbWFyZ2luIGRhbiBzdHJhdGVnaSBoYXJnYS4gS2V0aWdhIHZhcmlhYmVsIGluaSBtZW1pbGlraSBrYWl0YW4geWFuZyBsb2dpcyBkYWxhbSBrb250ZWtzIG1hbmFqZW1lbiBwZW5qdWFsYW4gcHJvZHVrLg0KPC9wPiANCg0KPHAgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxOHB4OyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+DQpVbnR1ayBtZW5nYW5hbGlzaXMgaHVidW5nYW4gYW50YXIgdmFyaWFiZWwsIG1ldG9kZSB5YW5nIGRpZ3VuYWthbiBhZGFsYWggcmVncmVzaSBsaW5lYXIgYmVyZ2FuZGEgZGVuZ2FuIGVzdGltYXNpICpyb2J1c3QgTGVhc3QgVHJpbW1lZCBTcXVhcmVzKiAoTFRTKS4gTWV0b2RlIExUUyBkaXBpbGloIGthcmVuYSBtZW1pbGlraSBrZXVuZ2d1bGFuIGRhbGFtIG1lbmdoYWRhcGkgZGF0YSB5YW5nIG11bmdraW4gbWVuZ2FuZHVuZyBwZW5jaWxhbiAoKm91dGxpZXIqKSBhdGF1IGtldGlkYWt0ZXJhdHVyYW4gbGFpbm55YSwgeWFuZyBiaXNhIG1lbWVuZ2FydWhpIGFrdXJhc2kgbW9kZWwgcmVncmVzaSBiaWFzYS4gRGVuZ2FuIG1lbmdndW5ha2FuIHBlbmRla2F0YW4gKnJvYnVzdCosIGhhc2lsIGFuYWxpc2lzIGRpaGFyYXBrYW4gdGV0YXAgc3RhYmlsIGRhbiBhbmRhbCBtZXNraXB1biB0ZXJkYXBhdCBvYnNlcnZhc2kgeWFuZyBla3N0cmVtIGRhbGFtIGRhdGEuDQo8L3A+IA0KDQojIExhbmRhc2FuIFRlb3JpDQojIyBVamkgQXN1bXNpIEtsYXNpaw0KPHAgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxOHB4OyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+DQpVamkgYXN1bXNpIGtsYXNpayBkaWxha3VrYW4gdW50dWsgbWVsaWhhdCBhcGFrYWggbW9kZWwgcmVncmVzaSB5YW5nIGRpcGVyb2xlaA0KbWVtZW51aGkgYXN1bXNpIGtsYXNpayBzZWhpbmdnYSBkYXBhdCBkaWthdGFrYW4gYmFod2EgbW9kZWwgeWFuZyBkaWhhc2lsa2FuIGJlcnNpZmF0DQpCTFVFICgqQmVzdCBMaW5lYXIgVW5iaWFzZWQgRXN0aW1hdG9yKikuIEppa2EgYWRhIGFzdW1zaSB5YW5nIGRpbGFuZ2dhciwgbWFrYSB0aWRhayBkYXBhdCBkaWd1bmFrYW4uIE1ha2EgZGFyaSBpdHUsIGRpZ3VuYWthbiByZWdyZXNpIHJvYnVzdC4gDQo8L3A+IA0KIyMjIFVqaSBOb3JtYWxpdGFzDQo8cCBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGp1c3RpZnk7Ij4NClVudHVrIG1lbmd1amkgYXBha2FoIGRhbGFtIG1vZGVsIHJlZ3Jlc2kgdmFyaWFiZWwgcGVuZ2dhbmdndSBhdGF1IHJlc2lkdWFsDQptZW1pbGlraSBkaXN0cmlidXNpIG5vcm1hbCBhdGF1IHRpZGFrIG1ha2EgZGlndW5ha2FuIHVqaSAqS29sbW9nb3JvdiBTbWlybm92IFRlc3QqLiBLZXB1dHVzYW4gdW50dWsgbWVub2xhaw0KJEhfMCQgamlrYSAqcC12YWx1ZSoga3VyYW5nIGRhcmkgdGluZ2thdCBzaWduaWZpa2Fuc2kgKPCdm7wpIDUlLg0KPC9wPiANCiMjIyBVamkgSGV0ZXJva2VkYXN0aXNpdGFzDQo8cCBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGp1c3RpZnk7Ij4NClVqaSBIZXRlcm9za2VkYXN0aXNpdGFzIGJlcnR1anVhbiB1bnR1ayBtZW5nZXRhaHVpIGFwYWthaCB2YXJpYW5zaSBnYWxhdCBiZXJzaWZhdCBob21vc2tlZGFzdGlzaXRhcyBhdGF1IGhldGVyb3NrZWRhc3Rpc2l0YXMuIEhldGVyb3NrZWRhc3Rpc2l0YXMgYWthbiBtZW55ZWJhYmthbiBwZW5ha3NpcmFuIGtvZWZpc2llbi1rb2VmaXNpZW4gcmVncmVzaSBtZW5qYWRpIHRpZGFrIGVmaXNpZW4gZGFuIGhhc2lsIHRha3NpcmFuIGRhcGF0IG1lbmphZGkga3VyYW5nIGF0YXUgbWVsZWJpaGkgZGFyaSBzZW1lc3RpbnlhLiBEZW5nYW4gZGVtaWtpYW4sIGFnYXIga29lZmlzaWVuLWtvZWZpc2llbiByZWdyZXNpIHRpZGFrIHNhbGFoIHRha3NpciBtYWthDQpoZXRlcm9za2VkYXN0aXNpdGFzIGhhcnVzIGRpaGlsYW5na2FuLiBTYWxhaCBzYXR1IG1ldG9kZSB1amkgaGV0ZXJvc2tlZGFzdGlzaXRhcyBhZGFsYWggdWppICpCcmV1c2NoLVBhZ2FuKi4NCjwvcD4gDQojIyMgVWppIE11bHRpa29saW5lYXJpdGFzDQo8cCBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGp1c3RpZnk7Ij4NClVudHVrIG1lbGFrdWthbiB1amkgbXVsdGlrb2xpbmVhcml0YXMsIGRhcGF0IGRpZ3VuYWthbiBtZXRvZGUgKlZhcmlhbmNlIEluZmxhdGlvbiBGYWN0b3IqIChWSUYpLiBWSUYgbWVuZ3VrdXIgc2VqYXVoIG1hbmEgdmFyaWFiZWwgaW5kZXBlbmRlbiB0ZXJrYWl0IGVyYXQgZGVuZ2FuIHZhcmlhYmVsIGxhaW4gZGFsYW0gbW9kZWwgcmVncmVzaS4gU2VtYWtpbiB0aW5nZ2kgbmlsYWkgVklGLCBzZW1ha2luIHRpbmdnaSB0aW5na2F0IG11bHRpa29saW5lYXJpdGFzLiBOaWxhaSBWSUY+MTAgbWVudW5qdWtrYW4gYWRhbnlhIG11bHRpa29saW5lYXJpdGFzIHlhbmcgc2lnbmlmaWthbi4NCjwvcD4gDQojIyMgVWppIEF1dG9rb3JlbGFzaQ0KPHAgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxOHB4OyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+DQpVamkgYXV0b2tvcmVsYXNpIGF0YXUgdWppIG5vbi1hdXRva29yZWxhc2kgZGFsYW0ga29udGVrcyByZWdyZXNpIGFkYWxhaCBwZW5ndWppYW4gYXBha2FoIHRlcmRhcGF0IGh1YnVuZ2FuIGxpbmllciBhbnRhcmEgbmlsYWkgcmVzaWR1YWwgcGFkYSBzdWF0dSBvYnNlcnZhc2kgZGVuZ2FuIG5pbGFpIHJlc2lkdWFsIHBhZGEgb2JzZXJ2YXNpIHNlYmVsdW1ueWEuUGVuZ3VqaWFuIGF1dG9rb3JlbGFzaSBkYXBhdCBkaWxha3VrYW4gZGVuZ2FuIHVqaSAqRHVyYmluLVdhdHNvbioNCjwvcD4gDQojIyMgVWppIExpbmVhcml0YXMNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KVWppIGxpbmVhcml0YXMgZGlndW5ha2FuIHVudHVrIG1lbGloYXQgYXBha2FoIG1vZGVsIHlhbmcgZGlndW5ha2FuIG1lbWlsaWtpIGh1YnVuZ2FuIGxpbmVhciBhdGF1IHRpZGFrLiBVamkgbGluZWFyaXRhcyBzYW5nYXQgcGVudGluZyBkYWxhbSByZWdyZXNpIGxpbmllciBrYXJlbmEgbW9kZWwgcmVncmVzaSBsaW5pZXIgbWVuZ2FzdW1zaWthbiBiYWh3YSBodWJ1bmdhbiBhbnRhcmEgdmFyaWFiZWwgZGVwZW5kZW4gZGFuIGluZGVwZW5kZW4gZGFwYXQgZGlqZWxhc2thbiBkZW5nYW4gZ2FyaXMgbHVydXMuDQo8L3A+IA0KDQojIyBSZWdyZXNpIFJvYnVzdCBFc3RpbWFzaSBMVFMNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KKkxlYXN0IFRyaW1tZWQgU3F1YXJlKiAoTFRTKSBkaXVzdWxrYW4gb2xlaCBSb3Vzc2V1dyAoMTk4NCkgc2ViYWdhaSBhbHRlcm5hdGlmIHJvYnVzdCANCnVudHVrIG1lbmdhdGFzaSBrZWxlbWFoYW4gTUtULCB5YWl0dSBkZW5nYW4gbWVuZ2d1bmFrYW4gc2ViYW55YWsg4oSOICjihI4g4omkIPCdkZspIGt1YWRyYXQgDQpzZXNhdGFuIHlhbmcgZGl1cnV0a2FuICBuaWxhaW55YSAoUm91c3NldXcsIDE5ODQpLiBSdW11cyBwYWRhDQplc3RpbWFzaSBMVFMgc2ViYWdhaSBiZXJpa3V0IDoNCg0KDQokJA0KUV97XG1hdGhybXtMVFN9fSA9IFxzdW1fe2k9MX1ee2h9IGVfaV4yDQokJA0KDQoqKktldGVyYW5nYW46KiogIA0KLSBcKGggPSBcbGVmdFxsZmxvb3IgXHRmcmFje259ezJ9IFxyaWdodFxyZmxvb3IgKyBcbGVmdFxsZmxvb3IgXHRmcmFje2srMn17Mn0gXHJpZ2h0XHJmbG9vclwpICANCi0gXChlX2kgPSBcaGF0IHlfaSAtIFhfaV5cIFxoYXRcYmV0YV8wXCkNCg0KTWVudXJ1dCBSb3Vzc2VldXcgZGFuIEh1YmVydCAoMTk5NykgZXN0aW1hdG9yIHVudHVrIExUUyBkYXBhdCBkaWRhcGF0a2FuIGRlbmdhbiANCmNhcmE6DQoNCiQkDQpzX3tcbWF0aHJte0xUU319DQo9IGRfe2gsbn1cLA0KICBcc3FydHtcZnJhY3sxfXtofVxzdW1fe2k9MX1ee2h9IGVfaV4yfQ0KJCQNCg0KKipkZW5nYW46KiogIA0KLSBcKGRfe2gsbn0gPSBcZGlzcGxheXN0eWxlIFxmcmFjezF9e1xzcXJ0e1wsMSAtIFxkZnJhY3sybn17aFwsY197aCxufX1cO1xwaGlcYmlnbCgxL2Nfe2gsbn1cYmlncilcLH19XCkgIA0KLSBcKGNfe2gsbn0gPSBcZGlzcGxheXN0eWxlIFxmcmFjezF9e1xQaGleey0xfVwhXEJpZ2woXHRmcmFje2ggKyBufXsybn1cQmlncil9XCkgIA0KDQpTZXRlbGFoIGRpZGFwYXRrYW4gbmlsYWkgJHNfe0xUU30kIGxhbHUgbWVuZ2hpdHVuZyBwZW1ib2JvdCAkd19pJCBkZW5nYW4gcnVtdXM6DQoNCiQkDQp3X2kgXDs9XDsNClxiZWdpbntjYXNlc30NCiAgMCwgJiBcdGV4dHtqaWthIH0gXEJpZ2x8XGRmcmFje2VfaX17c197XG1hdGhybXtMVFN9fX1cQmlncnwgPiAyLjUsXFxbMC41ZW1dDQogIDEsICYgXHRleHR7bGFpbm55YS59DQpcZW5ke2Nhc2VzfQ0KJCQNCg0KPC9wPiANCg0KIyAqU291cmNlIENvZGUqDQojIyAqTGlicmFyeSogeWFuZyBkaWd1bmFrYW4NCmBgYHtyfQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KHpvbykNCmxpYnJhcnkobG10ZXN0KQ0KbGlicmFyeShyb2J1c3RiYXNlKQ0KbGlicmFyeShjYXIpDQpsaWJyYXJ5KE1BU1MpDQpsaWJyYXJ5KGxtdGVzdCkNCmxpYnJhcnkocmVhZHhsKQ0KYGBgDQoNCiMjICpJbXBvcnQqIERhdGENCmBgYHtyfQ0KY2FmZmVlbW9jaGEgPC0gcmVhZF9leGNlbCgiRDovY2FmZmVlbW9jaGEueGxzeCIpDQpjYWZmZWVtb2NoYQ0KDQojTUVNQlVBVCBEQVRBIEZSQU1FDQpkYXRhPC1kYXRhLmZyYW1lKGNhZmZlZW1vY2hhKQ0KYGBgDQojIyBTdGF0c2l0aWsgRGVza3JpcHRpZg0KYGBge3J9DQojU3RhdGlzdGlrIERlc2tyaXB0aWYNCnN1bW1hcnkoZGF0YSkNCmBgYA0KIyMgTW9kZWwgUHJlZGlrc2kgTUtUDQpgYGB7cn0NCk1LVD1sbShTYWxlc34uLGRhdGE9ZGF0YSkNCnN1bW1hcnkoTUtUKQ0KYGBgDQo8cCBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGp1c3RpZnk7Ij4NCkphZGkgbW9kZWwgcHJlZGlrc2kgTUtUIG55YSA6IA0KJCQNClx3aWRlaGF0e1x0ZXh0e1NhbGVzfX0NClw7PVw7DQo0NC44NTExOTYNClw7LVw7MC42ODUxODhcLFxtYXRocm17TWFya2V0aW5nfQ0KXDstXDswLjA4Mjk1NlwsXG1hdGhybXtJbnZlbnRvcnl9DQpcOytcOzIuODE1OTIxXCxcbWF0aHJte0NPR1N9DQpcOytcdmFyZXBzaWxvbl9pDQokJA0KPC9wPiANCiMjIFVqaSBzaWduaWZpa2Fuc2kNCiMjIyBVamkgU2ltdWx0YW4NCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KSF8wOlw7Jlw7XGJldGFfe1xtYXRocm17TWFya2V0aW5nfX0gPSBcYmV0YV97XG1hdGhybXtJbnZlbnRvcnl9fSA9IFxiZXRhX3tcbWF0aHJte0NPR1N9fSA9IDAsXFwNCkhfMTpcOyZcO1x0ZXh0e3NldGlkYWtueWEgc2FsYWggc2F0dSB9XGJldGFfaSBcbmVxIDAuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpcYWxwaGEgJj0gMC4wNSxcXA0KXHRleHR7VG9sYWsgfUhfMCAmXHF1YWRcdGV4dHtqaWthIH1wXHRleHR7LXZhbHVlfTxcYWxwaGEuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpwXHRleHR7LXZhbHVlfSAmPSAyLjJcdGltZXMxMF57LTE2fS4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYm94ZWR7DQogIFx0ZXh0e0thcmVuYSB9cFx0ZXh0ey12YWx1ZX08MC4wNSxcXFx0ZXh0e21ha2EgSDAgZGl0b2xha30gXFxcdGV4dHt5YW5nIGJlcmFydGkgYmFod2EgcGFsaW5nIHRpZGFrIHRlcmRhcGF0IHNhdHUgZGFyaSB2YXJpYWJlbCANCiAgTWFya2V0aW5nIChYMSksIEludmVudG9yeSAoWDIpLCBDT0dTIChYMykgYmVycGVuZ2FydWggc2lnbmlmaWthbiB0ZXJoYWRhcCBTYWxlc30NCn0NCiQkDQoNCjwvcD4gIA0KDQojIyMgVWppIFBhcnNpYWwNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KVWppIFBhcnNpYWwgVmFyaWFiZWwgTWFya2V0aW5nIDoNCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCkhfMDpcOyZcYmV0YV97XG1hdGhybXtNYXJrZXRpbmd9fSA9IDAsXFwNCkhfMTpcOyZcYmV0YV97XG1hdGhybXtNYXJrZXRpbmd9fSBcbmVxIDAsXFwNClxhbHBoYSAmPSAwLjA1LFxcDQpcdGV4dHtUb2xhayB9SF8wICZccXVhZFx0ZXh0e2ppa2EgfXBcdGV4dHstdmFsdWV9PFxhbHBoYS4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCnRfe1xtYXRocm17TWFya2V0aW5nfX0gJj0gLTEwLjgzLFxcDQpwXHRleHR7LXZhbHVlfSAmPCAyXHRpbWVzMTBeey0xNn0uDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJveGVkew0KICBcdGV4dHtLYXJlbmEgfXBcdGV4dHstdmFsdWV9PDAuMDUsXDsNCiAgXGJldGFfe1xtYXRocm17TWFya2V0aW5nfX1cdGV4dHsgc2lnbmlmaWthbiB0ZXJoYWRhcCBTYWxlcy59DQp9DQokJA0KVWppIFBhcnNpYWwgSW52ZW50b3J5DQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpIXzA6XDsmXGJldGFfe1xtYXRocm17SW52ZW50b3J5fX0gPSAwLFxcDQpIXzE6XDsmXGJldGFfe1xtYXRocm17SW52ZW50b3J5fX0gXG5lcSAwLFxcDQpcYWxwaGEgJj0gMC4wNSxcXA0KXHRleHR7VG9sYWsgfUhfMCAmXHF1YWRcdGV4dHtqaWthIH1wXHRleHR7LXZhbHVlfTxcYWxwaGEuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQp0X3tcbWF0aHJte0ludmVudG9yeX19ICY9IC0yMC4xMCxcXA0KcFx0ZXh0ey12YWx1ZX0gJjwgMlx0aW1lczEwXnstMTZ9Lg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxib3hlZHsNCiAgXHRleHR7S2FyZW5hIH1wXHRleHR7LXZhbHVlfTwwLjA1LFw7DQogIFxiZXRhX3tcbWF0aHJte0ludmVudG9yeX19XHRleHR7IHNpZ25pZmlrYW4gdGVyaGFkYXAgU2FsZXMufQ0KfQ0KJCQNClVqaSBQYXJzaWFsIENPR1MNCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCkhfMDpcOyZcYmV0YV97XG1hdGhybXtDT0dTfX0gPSAwLFxcDQpIXzE6XDsmXGJldGFfe1xtYXRocm17Q09HU319IFxuZXEgMCxcXA0KXGFscGhhICY9IDAuMDUsXFwNClx0ZXh0e1RvbGFrIH1IXzAgJlxxdWFkXHRleHR7amlrYSB9cFx0ZXh0ey12YWx1ZX08XGFscGhhLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KdF97XG1hdGhybXtDT0dTfX0gJj0gNjUuNTksXFwNCnBcdGV4dHstdmFsdWV9ICY8IDJcdGltZXMxMF57LTE2fS4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYm94ZWR7DQogIFx0ZXh0e0thcmVuYSB9cFx0ZXh0ey12YWx1ZX08MC4wNSxcOw0KICBcYmV0YV97XG1hdGhybXtDT0dTfX1cdGV4dHsgc2lnbmlmaWthbiB0ZXJoYWRhcCBTYWxlcy59DQp9DQokJA0KDQo8L3A+DQojIyBVamkgYXN1bXNpDQojIyMgVWppIE5vcm1hbGl0YXMNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KYGBge3J9DQojTWVuZ2d1bmFrYW4gVWppIEtvbG1vZ29yb3YgU21pcm5vdg0Ka3MudGVzdChNS1QkcmVzaWR1YWxzLCAncG5vcm0nKQ0KYGBgDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpIXzA6XDsmXHRleHR7UmVzaWR1YWwgbWVuZ2lrdXRpIGRpc3RyaWJ1c2kgbm9ybWFsfSxcXA0KSF8xOlw7Jlx0ZXh0e1Jlc2lkdWFsIHRpZGFrIG1lbmdpa3V0aSBkaXN0cmlidXNpIG5vcm1hbH0sXFwNClxhbHBoYSAmPSAwLjA1LFxcDQpcdGV4dHtUb2xhayB9SF8wJlxxdWFkXHRleHR7amlrYSB9cFx0ZXh0ey12YWx1ZX08XGFscGhhLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KcFx0ZXh0ey12YWx1ZX0gJjwgMi4yXHRpbWVzMTBeey0xNn0uDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJveGVkew0KICBcdGV4dHtLYXJlbmEgfXBcdGV4dHstdmFsdWV9PDAuMDUsXDsNCiAgXHRleHR7bWFrYSByZXNpZHVhbCB0aWRhayBiZXJkaXN0cmlidXNpIG5vcm1hbC59DQp9DQokJA0KDQo8L3A+DQojIyMgVWppIEhldGVyb2tlZGFzdGlzaXRhcw0KPHAgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxOHB4OyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+DQpgYGB7cn0NCiNNZW5nZ3VuYWthbiBVamkgQnJldXNjaC1QYWdhbg0KYnB0ZXN0KE1LVCkNCmBgYA0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KSF8wOlw7Jlx0ZXh0e1RpZGFrIHRlcmRhcGF0IEhldGVyb2tlZGFzdGlzaXRhc30sXFwNCkhfMTpcOyZcdGV4dHtUZXJkYXBhdCBIZXRlcm9rZWRhc3Rpc2l0YXN9LFxcDQpcYWxwaGEgJj0gMC4wNSxcXA0KXHRleHR7VG9sYWsgfUhfMCAmXHF1YWRcdGV4dHtqaWthIH1wXHRleHR7LXZhbHVlfTxcYWxwaGEuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpcbWF0aHJte0JQfSAmPSAxMzMuMTgsXFwNClxtYXRocm17ZGZ9ICY9IDMsXFwNCnBcdGV4dHstdmFsdWV9ICY8IDIuMlx0aW1lczEwXnstMTZ9Lg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxib3hlZHsNCiAgXHRleHR7S2FyZW5hIH1wXHRleHR7LXZhbHVlfTwwLjA1LFw7DQogIFx0ZXh0e21ha2EgSH1fMFx0ZXh0eyBkaXRvbGFrIG1ha2EgdGVyZGFwYXQgaGV0ZXJvc2tlZGFzdGlzaXRhcy59DQp9DQokJA0KDQo8L3A+DQoNCiMjIyBVamkgQXV0b2tvcmVsYXNpDQo8cCBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGp1c3RpZnk7Ij4NCmBgYHtyfQ0KI01lbmdndW5ha2FuIFVqaSBEdXJiaW4gV2F0c29uDQpkd3Rlc3QoTUtUKQ0KYGBgDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpIXzA6XDsmXHJobyA9IDAgXHF1YWQoXHRleHR7dGlkYWsgYWRhIGF1dG9rb3JlbGFzaX0pLFxcDQpIXzE6XDsmXHJobyBcbmVxIDAgXHF1YWQoXHRleHR7YWRhIGF1dG9rb3JlbGFzaX0pLFxcDQpcYWxwaGEgJj0gMC4wNSxcXA0KXHRleHR7VG9sYWsgfUhfMCAmXHF1YWRcdGV4dHtqaWthIH1wXHRleHR7LXZhbHVlfTxcYWxwaGEuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpcbWF0aHJte0RXfSAmPSAxLjczNDIsXFwNCnBcdGV4dHstdmFsdWV9ICY9IDAuMDAxODE1Lg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxib3hlZHsNCiAgXHRleHR7S2FyZW5hIH1wXHRleHR7LXZhbHVlfTwwLjA1LFw7DQogIEhfMFx0ZXh0eyBkaXRvbGFrIG1ha2EgdGVyZGFwYXQgYXV0b2tvcmVsYXNpIHJlc2lkdWFsLn0NCn0NCiQkDQoNCjwvcD4NCiMjIyBVamkgTXVsdGlrb2xpbmVhcml0YXMNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KYGBge3J9DQojTWVuZ2d1bmFrYW4gVWppIFZJRg0KdmlmKE1LVCkNCmBgYA0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KSF8wOlw7Jlx0ZXh0e1RpZGFrIHRlcmRhcGF0IG11bHRpa29saW5lYXJpdGFzIGFudGFyIHZhcmlhYmVsfSxcXA0KSF8xOlw7Jlx0ZXh0e1RlcmRhcGF0IG11bHRpa29saW5lYXJpdGFzIGFudGFyIHZhcmlhYmVsfSxcXA0KXHRleHR7S3JpdGVyaWE6IH0mXHRleHR7dG9sYWsgfUhfMFw7XHRleHR7amlrYSBWSUZ9ID4gMTAuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpcbWF0aHJte1ZJRn0oXG1hdGhybXtNYXJrZXRpbmd9KSAmPSAxLjg4MzAsXFwNClxtYXRocm17VklGfShcbWF0aHJte0ludmVudG9yeX0pICY9IDEuNTk3MixcXA0KXG1hdGhybXtWSUZ9KFxtYXRocm17Q09HU30pICY9IDIuMTk0Ny4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYm94ZWR7DQogIFx0ZXh0e0thcmVuYSBzZW11YSBWSUZ9PDEwLFw7DQogIFx0ZXh0e21ha2EgZ2FnYWwgdG9sYWsgfUhfMFw7XExvbmdyaWdodGFycm93XDsNCiAgXHRleHR7dGlkYWsgYWRhIG11bHRpa29saW5lYXJpdGFzLn0NCn0NCiQkDQoNCjwvcD4NCiMjIyBVamkgTGluaWVhcml0YXMNCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KYGBge3J9DQojIFVqaSBBc3Vtc2kgTGluZWFyaXRhcyBtZW5nZ3VuYWthbiBSYW1zZXkgUkVTRVQNCnJhbXNleV90ZXN0IDwtIHJlc2V0dGVzdChNS1QsIHBvd2VyID0gMikNCnJhbXNleV90ZXN0DQpgYGANCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCkhfMDpcOyZcdGV4dHtNb2RlbCBtZW1lbnVoaSBhc3Vtc2kgbGluZWFyaXRhc30sXFwNCkhfMTpcOyZcdGV4dHtNb2RlbCB0aWRhayBtZW1lbnVoaSBhc3Vtc2kgbGluZWFyaXRhc30sXFwNClxhbHBoYSAmPSAwLjA1LFxcDQpcdGV4dHtUb2xhayB9SF8wICZccXVhZFx0ZXh0e2ppa2EgfXBcdGV4dHstdmFsdWV9PFxhbHBoYS4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCnBcdGV4dHstdmFsdWV9ICY9IDkuNjkxXHRpbWVzMTBeey0xMX0uDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJveGVkew0KICBcdGV4dHtLYXJlbmEgfXBcdGV4dHstdmFsdWV9PDAuMDUsXDsNCiAgSF8wXHRleHR7IGRpdG9sYWsgbWFrYSBtb2RlbCB0aWRhayBtZW1lbnVoaSBhc3Vtc2kgbGluZWFyaXRhcy59DQp9DQokJA0KDQo8L3A+DQojIyBEZXRla3NpIE91dGxpZXINCjxwIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMThweDsgdGV4dC1hbGlnbjoganVzdGlmeTsiPg0KYGBge3J9DQpib3hwbG90KGRhdGEpDQpgYGANCg0KRGlsaWhhdCBkYXJpIGJveHBsb3QgdGVyc2VidXQgZGFwYXQgZGlzaW1wdWxrYW4gdGVyZGFwYXQgb3V0bGllciBwYWRhIGRhdGEuDQoNCmBgYHtyfQ0KZGZmaXRzX3ZhbHVlcyA8LSBkZmZpdHMoTUtUKQ0KbmlsYWlfcGVtYmFuZGluZyA8LSAyICogKHNxcnQoNC80ODApKQ0KY2F0KCJcbk5pbGFpIFBlbWJhbmRpbmcgREZGSVRTOiIsIG5pbGFpX3BlbWJhbmRpbmcpDQoNCmBgYA0KYGBge3J9DQpqdW1sYWhfb3V0bGllciA8LSBzdW0oYWJzKGRmZml0c192YWx1ZXMpID4gbmlsYWlfcGVtYmFuZGluZykNCmNhdCgiXG5cbkp1bWxhaCBEYXRhIE91dGxpZXI6IiwganVtbGFoX291dGxpZXIpDQoNCmBgYA0KDQo8L3A+DQoNCiMgTW9kZWwgUmVncmVzaSBSb2J1c3QgRXN0aW1hc2kgTFRTDQo8cCBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDE4cHg7IHRleHQtYWxpZ246IGp1c3RpZnk7Ij4NCmBgYHtyfQ0KbW9kZWxfcm9idXN0IDwtIGx0c1JlZyhTYWxlcyB+IE1hcmtldGluZyArIEludmVudG9yeSArIENPR1MsIGRhdGEgPSBkYXRhKQ0KbW9kZWxfcm9idXN0DQpzdW1tYXJ5KG1vZGVsX3JvYnVzdCkNCmBgYA0KSmFkaSBtb2RlbCByZWdyZXNpIHJvYnVzdCBueWEgOiANCiQkDQpcd2lkZWhhdHtcdGV4dHtTYWxlc319DQpcOz1cOw0KMi4zOTcwNjENClw7LVw7MC4wNDk4MDVcLFxtYXRocm17TWFya2V0aW5nfQ0KXDsrXDswLjAwMTA0MVwsXG1hdGhybXtJbnZlbnRvcnl9DQpcOytcOzIuNDA5NDMzXCxcbWF0aHJte0NPR1N9DQpcOytcdmFyZXBzaWxvbl9pDQokJA0KDQpBcnRpbnlhOg0KDQotICoqSW50ZXJjZXB0ICgyLDM5NzEpOioqIGtldGlrYSBDT0dTLCBNYXJrZXRpbmcsIGRhbiBJbnZlbnRvcnkgc2VtdWFueWEgYmVybmlsYWkgbm9sLCBtb2RlbCBtZW1wcmVkaWtzaSBTYWxlcyBzZWJlc2FyIHNla2l0YXIgMiw0MCB1bml0Lg0KDQotICoqQ09HUyAoMiw0MDk0KToqKiBzZXRpYXAga2VuYWlrYW4gMSBzYXR1YW4gZGFsYW0gQ09HUyAoYmlheWEgcG9rb2sgcGVuanVhbGFuKSBkaWthaXRrYW4gZGVuZ2FuIHBlbmluZ2thdGFuIFNhbGVzIHNlYmVzYXIga2lyYS1raXJhIDIsNDEgc2F0dWFuLCBtZW5hbmRha2FuIGJhaHdhIENPR1MgbWVtaWxpa2kgcGVuZ2FydWggcG9zaXRpZiBkYW4gdGVyYmVzYXIgZGkgYW50YXJhIGtldGlnYSBwcmVkaWt0b3IuDQoNCi0gKipNYXJrZXRpbmcgKOKIkjAsMDQ5OCk6Kiogc2V0aWFwIHRhbWJhaGFuIDEgc2F0dWFuIGJlbGFuamEgTWFya2V0aW5nIGRpcGVya2lyYWthbiBtZW51cnVua2FuIFNhbGVzIHNlYmVzYXIgMCwwNSBzYXR1YW7igJRlZmVrIG5lZ2F0aWYgeWFuZyByZWxhdGlmIGtlY2lsLCBtdW5na2luIGthcmVuYSBwZW5pbmdrYXRhbiBwZW5nZWx1YXJhbiBwZW1hc2FyYW4gcGFkYSB0aXRpayB0ZXJ0ZW50dSB0aWRhayBzZWxhbHUgbGFuZ3N1bmcgbWVuZG9yb25nIHBlbmp1YWxhbi4NCg0KLSAqKkludmVudG9yeSAoMCwwMDEwKToqKiBrb2VmaXNpZW4gcG9zaXRpZiB0YXBpIHNhbmdhdCBrZWNpbCwgbWVudW5qdWtrYW4gYmFod2EgcGVydWJhaGFuIEludmVudG9yeSBoYW1waXIgdGlkYWsgYmVycGVuZ2FydWggdGVyaGFkYXAgU2FsZXMgZGFsYW0gcmVudGFuZyBkYXRhIGluaS4NCg0KU2VjYXJhIGtlc2VsdXJ1aGFuLCBDT0dTIGFkYWxhaCBwZW5kb3JvbmcgdXRhbWEgcGVuanVhbGFuLCBzZW1lbnRhcmEgTWFya2V0aW5nIGRhbiBJbnZlbnRvcnkgbWVtYmVyaWthbiBlZmVrIHlhbmcgamF1aCBsZWJpaCBsZW1haCwgYmFoa2FuIE1hcmtldGluZyBzZWRpa2l0IG1lbnVydW5rYW4gcHJlZGlrc2kgU2FsZXMgZGFuIEludmVudG9yeSBueWFyaXMgdGlkYWsgYmVyZGFtcGFrLg0KDQo8L3A+DQoNCiMjIFVqaSBTaWduaWZpa2Fuc2kgTW9kZWwNCiMjIyBVamkgU2ltdWx0YW4NCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCkhfMDpcOyZcO1xiZXRhX3tcbWF0aHJte01hcmtldGluZ319ID0gXGJldGFfe1xtYXRocm17SW52ZW50b3J5fX0gPSBcYmV0YV97XG1hdGhybXtDT0dTfX0gPSAwLFxcDQpIXzE6XDsmXDtcdGV4dHtzZXRpZGFrbnlhIHNhbGFoIHNhdHUgfVxiZXRhX2kgXG5lcSAwLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KXGFscGhhICY9IDAuMDUsXFwNClx0ZXh0e1RvbGFrIH1IXzAgJlxxdWFkXHRleHR7amlrYSB9cFx0ZXh0ey12YWx1ZX08XGFscGhhLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KcFx0ZXh0ey12YWx1ZX0gJj0gMi4yXHRpbWVzMTBeey0xNn0uDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJveGVkew0KICBcdGV4dHtLYXJlbmEgfXBcdGV4dHstdmFsdWV9PDAuMDUsXFxcdGV4dHttYWthIEgwIGRpdG9sYWt9IFxcXHRleHR7eWFuZyBiZXJhcnRpIGJhaHdhIHBhbGluZyB0aWRhayB0ZXJkYXBhdCBzYXR1IGRhcmkgdmFyaWFiZWwgDQogIE1hcmtldGluZyAoWDEpLCBJbnZlbnRvcnkgKFgyKSwgQ09HUyAoWDMpIGJlcnBlbmdhcnVoIHNpZ25pZmlrYW4gdGVyaGFkYXAgU2FsZXN9DQp9DQokJA0KDQoNCiMjIyBVamkgUGFyc2lhbA0KVWppIFBhcnNpYWwgTWFya2V0aW5nDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpIXzA6XDsmXGJldGFfe1xtYXRocm17TWFya2V0aW5nfX0gPSAwLFxcDQpIXzE6XDsmXGJldGFfe1xtYXRocm17TWFya2V0aW5nfX0gXG5lcSAwLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KXGFscGhhICY9IDAuMDUsXFwNClx0ZXh0e1RvbGFrIH1IXzAgJlxxdWFkXHRleHR7amlrYSB9cFx0ZXh0ey12YWx1ZX08XGFscGhhLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KdCgzOTUpICY9IC0yLjU2MSxcXA0KcFx0ZXh0ey12YWx1ZX0gJj0gMC4wMTA4Lg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxib3hlZHsNCiAgXHRleHR7S2FyZW5hIH1wXHRleHR7LXZhbHVlfTwwLjA1LFw7DQogIFxiZXRhX3tcbWF0aHJte01hcmtldGluZ319XHRleHR7IHNpZ25pZmlrYW4gdGVyaGFkYXAgU2FsZXMufQ0KfQ0KJCQNClVqaSBQYXJzaWFsIEludmVudG9yeToNCiQkDQpcYmVnaW57YWxpZ25lZH1bbF0NCkhfMDpcOyZcYmV0YV97XG1hdGhybXtJbnZlbnRvcnl9fSA9IDAsXFwNCkhfMTpcOyZcYmV0YV97XG1hdGhybXtJbnZlbnRvcnl9fSBcbmVxIDAuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQpcYWxwaGEgJj0gMC4wNSxcXA0KXHRleHR7VG9sYWsgfUhfMCAmXHF1YWRcdGV4dHtqaWthIH1wXHRleHR7LXZhbHVlfTxcYWxwaGEuDQpcZW5ke2FsaWduZWR9DQokJA0KDQokJA0KXGJlZ2lue2FsaWduZWR9W2xdDQp0KDM5NSkgJj0gMC41MzUsXFwNCnBcdGV4dHstdmFsdWV9ICY9IDAuNTkzMS4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYm94ZWR7DQogIFx0ZXh0e0thcmVuYSB9cFx0ZXh0ey12YWx1ZX1cZ2UgMC4wNSxcOw0KICBcYmV0YV97XG1hdGhybXtJbnZlbnRvcnl9fVx0ZXh0eyB0aWRhayBzaWduaWZpa2FuIHRlcmhhZGFwIFNhbGVzLn0NCn0NCiQkDQpVamkgUGFyc2lhbCBDT0dTOg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KSF8wOlw7JlxiZXRhX3tcbWF0aHJte0NPR1N9fSA9IDAsXFwNCkhfMTpcOyZcYmV0YV97XG1hdGhybXtDT0dTfX0gXG5lcSAwLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KXGFscGhhICY9IDAuMDUsXFwNClx0ZXh0e1RvbGFrIH1IXzAgJlxxdWFkXHRleHR7amlrYSB9cFx0ZXh0ey12YWx1ZX08XGFscGhhLg0KXGVuZHthbGlnbmVkfQ0KJCQNCg0KJCQNClxiZWdpbnthbGlnbmVkfVtsXQ0KdCgzOTUpICY9IDE0OS43NDcsXFwNCnBcdGV4dHstdmFsdWV9ICY8IDJcdGltZXMxMF57LTE2fS4NClxlbmR7YWxpZ25lZH0NCiQkDQoNCiQkDQpcYm94ZWR7DQogIFx0ZXh0e0thcmVuYSB9cFx0ZXh0ey12YWx1ZX08MC4wNSxcOw0KICBcYmV0YV97XG1hdGhybXtDT0dTfX1cdGV4dHsgc2lnbmlmaWthbiB0ZXJoYWRhcCBTYWxlcy59DQp9DQokJA0KDQojIyMgSW50ZXJwcmV0YXNpDQoNClNlY2FyYSBzaW11bHRhbiB1amkgRiBtZW51bmp1a2thbiBiYWh3YSBzZWNhcmEga2VzZWx1cnVoYW4ga2V0aWdhIHByZWRpa3RvciB5YWl0dSAqKkNPR1MsIE1hcmtldGluZywgZGFuIEludmVudG9yeSoqIHNlY2FyYSBiZXJzYW1h4oCQc2FtYSAqKmJlcnBlbmdhcnVoIHNpZ25pZmlrYW4qKiB0ZXJoYWRhcCBTYWxlcyAoRigzLDM5NSk9MjI5MjAsIHAtdmFsdWU8Mi4yw5cxMOKBu8K54oG2KSwgYXJ0aW55YSBtb2RlbCByZWdyZXNpIHJvYnVzdCBMVFMgaW5pIGxheWFrIGRpZ3VuYWthbiB1bnR1ayBtZW1wcmVkaWtzaSBTYWxlcy4gTmFtdW4sIHBhZGEgdWppIHBhcnNpYWwgaGFueWEgKipDT0dTKiogKHQ9MTQ5Ljc0NywgcDwyw5cxMOKBu8K54oG2KSBkYW4gKipNYXJrZXRpbmcqKiAodD3igJMyLjU2MSwgcD0wLjAxMDgpIHlhbmcgdGVyYnVrdGkgc2lnbmlmaWthbiBzZWNhcmEgaW5kaXZpZHVhbCwgc2VkYW5na2FuICoqSW52ZW50b3J5KiogKHQ9MC41MzUsIHA9MC41OTMxKSB0aWRhayBzaWduaWZpa2FuOyBpbmkgbWVuYW5kYWthbiBiYWh3YSBwZW5pbmdrYXRhbiBDT0dTIGRhbiBwZXJ1YmFoYW4gc3RyYXRlZ2kgTWFya2V0aW5nIGJlbmFy4oCQYmVuYXIgYmVyZGFtcGFrIHBhZGEgcGVuanVhbGFuLCBzZW1lbnRhcmEgdmFyaWFzaSBJbnZlbnRvcnkgZGFsYW0gcmVudGFuZyBkYXRhIGluaSB0aWRhayBtZW1iZXJpa2FuIGtvbnRyaWJ1c2kgeWFuZyBiZXJhcnRpLg0KDQoNCiMgS2VzaW1wdWxhbg0KPHAgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxOHB4OyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+DQoNCkRhcmkgYW5hbGlzaXMgcmVncmVzaSBNS1QgYXdhbCwgZGl0ZW11a2FuIGJhaHdhIG1vZGVsIE9MUyBzaWduaWZpa2FuIHNlY2FyYSBzaW11bHRhbiBuYW11biBtZWxhbmdnYXIgYmViZXJhcGEgYXN1bXNpIGtsYXNpayAobm9ybWFsaXRhcywgaGV0ZXJvc2tlZGFzdGlzaXRhcywgYXV0b2tvcmVsYXNpLCBkYW4gbGluZWFyaXRhcyksIG1lc2tpcHVuIG11bHRpa29saW5lYXJpdGFzIHRpZGFrIG1lbmphZGkgaXN1IGJlc2FyLiBEZW5nYW4gbWVsYWt1a2FuIGVzdGltYXNpIHJvYnVzdCBMVFMsIG1vZGVsIG1lbmphZGkgdGFoYW4gdGVyaGFkYXAgcGVuY2lsYW4gZGFuIG1lbmdoYXNpbGthbiBwZXJzYW1hYW4gIA0KDQpcWw0KXHdpZGVoYXR7XHRleHR7U2FsZXN9fSA9IDJ7LH0zOTcxIC0gMHssfTA0OThcLFx0ZXh0e01hcmtldGluZ30gKyAweyx9MDAxMFwsXHRleHR7SW52ZW50b3J5fSArIDJ7LH00MDk0XCxcdGV4dHtDT0dTfSArIFx2YXJlcHNpbG9uX2kuDQpcXQ0KDQpBcnRpbnlhOg0KDQotICoqQ09HUyoqIChiaWF5YSBwb2tvayBwZW5qdWFsYW4pIHB1bnlhIHBlbmdhcnVoIHBhbGluZyBiZXNhcjogbmFpayBzZXRlbmdhaCBkb2xhciBDT0dTLCBwZW5qdWFsYW4gbmFpayBzZWtpdGFyIFwkMiw0MC4NCi0gKipNYXJrZXRpbmcqKiAoYW5nZ2FyYW4gaWtsYW4pIHNlZGlraXQgbWVudXJ1bmthbiBwZW5qdWFsYW4gbXVuZ2tpbiBrYXJlbmEga2FtcGFueWUgYmVsdW0gdGVwYXQgc2FzYXJhbi4NCi0gKipJbnZlbnRvcnkqKiAoc3RvayBiYXJhbmcpIGhhbXBpciB0aWRhayBiZXJwZW5nYXJ1aC4NCg0KRGFyaSBzdWR1dCBwYW5kYW5nIGJpc25pcywgaGFzaWwgaW5pIG1lbnVuanVra2FuIGJhaHdhIENhZmZlTW9jaGEgc2ViYWlrbnlhIGZva3VzIG1lbmdhdHVyIHVsYW5nIGJpYXlhIHByb2R1a3NpIGRhbiBtZW1wZXJiYWlraSBjYXJhIHByb21vc2kuIE1lbmdlbHVhcmthbiBiaWF5YSBsZWJpaCB1bnR1ayBpa2xhbiB0ZXJueWF0YSBiZWx1bSB0ZW50dSBtZW5haWtrYW4gcGVuanVhbGFuLCBqYWRpIHN0cmF0ZWdpIHBlbWFzYXJhbm55YSBtdW5na2luIHBlcmx1IGRpZXZhbHVhc2kuIFNlbWVudGFyYSBpdHUsIG1lbmFtYmFoIHN0b2sgYmFyYW5nIGp1Z2EgdGlkYWsgYmFueWFrIHBlbmdhcnVobnlhIHRlcmhhZGFwIHBlbmp1YWxhbi5LYXJlbmEgbW9kZWwgTFRTIG1lbWJ1YW5nIGF0YXUgbWVuZ2VjaWxrYW4gcGVuZ2FydWggYW5na2EgcGVuanVhbGFuIHlhbmcgc2FuZ2F0IHRpbmdnaSBhdGF1IHNhbmdhdCByZW5kYWgsIGhhc2lsbnlhIGxlYmloIG1lbmNlcm1pbmthbiBrb25kaXNpIHJhdGEtcmF0YSBzZWhhcmktaGFyaS4gRGVuZ2FuIGJlZ2l0dSwgcmVuY2FuYSBiZWxhbmphIGRhbiBwcm9kdWtzaSBiaXNhIGRpc3VzdW4gZGVuZ2FuIGxlYmloIG1hbnRhcCwgdGFucGEga2hhd2F0aXIgZGlwZW5nYXJ1aGkgZGF0YSB5YW5nIG91dGxpZXIuDQoNCjwvcD4NCg0KIyBSZWZlcmVuc2kNCg0KLSBZaWh1aSBYaWUsIEouIEouIEFsbGFpcmUsIGRhbiBHYXJyZXR0IEdyb2xlbXVuZCwgUiBNYXJrZG93bjogVGhlIERlZmluaXRpdmUgR3VpZGUsIENoYXBtYW4gDQomIEhhbGwgLyBDUkMgUHJlc3MsIDIwMjIgKGh0dHBzOi8vYm9va2Rvd24ub3JnL3lpaHVpL3JtYXJrZG93bi8pDQotIFBlcmloYXRpbmksIEQuIEkuICgyMDE4KS4gUGVyYmFuZGluZ2FuIE1ldG9kZSBFc3RpbWFzaSBMVFMsIEVzdGltYXNpIE0sIGRhbiBFc3RpbWFzaSBTIHBhZGEgUmVncmVzaSBSb2J1c3QgKFN0dWRpIEthc3VzOiBQZW1iaWF5YWFuIE1vYmlsIHBhZGEgUGVydXNhaGFhbiDigJhY4oCZVGFodW4gMjAxNikuDQotIGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL3JvYnVzdGJhc2UtcGFja2FnZS1pbi1yLw0KDQo8c3R5bGU+IA0KICAgIGJvZHkgeyANCiAgICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyANCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0IyQUM4ODsgDQogICAgfSANCiAgICBoMSwgaDIgeyANCiAgICAgICAgY29sb3I6IGRhcmtncmVlbjsgDQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgDQogICAgICAgIGZvbnQtc3R5bGU6IG9ibGlxdWU7DQogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICANCiAgICB9IA0KICAgIHAgeyANCiAgICAgICAgdGV4dC1hbGlnbjoganVzdGlmeTsgDQogICAgICAgIGZvbnQtc2l6ZTogMThweDsgDQogICAgICAgIGNvbG9yOiAjMzMzOyANCiAgICB9IA0KICAgcC5taXJpbmcgeyBmb250LXN0eWxlOiBpdGFsaWM7fSANCjwvc3R5bGU+IA0KDQo8ZGl2IGlkPSJkYXJrLW1vZGUtdG9nZ2xlIj4NCiAgPHNwYW4gY2xhc3M9InN1biI+4piA77iPPC9zcGFuPg0KICA8ZGl2IGNsYXNzPSJ0b2dnbGUtc3dpdGNoIiBvbmNsaWNrPSJkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2RhcmstbW9kZScpIj48L2Rpdj4NCiAgPHNwYW4gY2xhc3M9Im1vb24iPvCfjJk8L3NwYW4+DQo8L2Rpdj4NCg0K