move again

This commit is contained in:
Florian Hoss 2022-05-30 21:14:32 +02:00
parent b2acdede89
commit 4da8357406
12 changed files with 3 additions and 3 deletions

View file

@ -0,0 +1,19 @@
module analyse
go 1.18
require (
github.com/dariubs/percent v1.0.0
gonum.org/v1/plot v0.11.0
)
require (
git.sr.ht/~sbinet/gg v0.3.1 // indirect
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect
github.com/go-fonts/liberation v0.2.0 // indirect
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 // indirect
github.com/go-pdf/fpdf v0.6.0 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
golang.org/x/image v0.0.0-20220302094943-723b81ca9867 // indirect
golang.org/x/text v0.3.7 // indirect
)

View file

@ -0,0 +1,78 @@
git.sr.ht/~sbinet/gg v0.3.1 h1:LNhjNn8DerC8f9DHLz6lS0YYul/b602DUxDgGkd/Aik=
git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/dariubs/percent v1.0.0 h1:fY8q40FRYaCiFZ0gTOa73Cmp21hS32w+tSSmqbGnUzc=
github.com/dariubs/percent v1.0.0/go.mod h1:NDZpkezJ8QqyIW/510MywB5T2KdC8v/0oTlEoPcMsRM=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/go-fonts/dejavu v0.1.0 h1:JSajPXURYqpr+Cu8U9bt8K+XcACIHWqWrvWCKyeFmVQ=
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8Hgo+3vk=
github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=
github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM=
github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ=
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk=
github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8=
github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3 h1:n9HxLrNxWWtEb1cA950nuEEj3QnKbtsCJ6KjcgisNUs=
golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20220302094943-723b81ca9867 h1:TcHcE0vrmgzNH1v3ppjcMGbhG5+9fMuvOmUYwNEF4q4=
golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E=
gonum.org/v1/plot v0.11.0 h1:z2ZkgNqW34d0oYUzd80RRlc0L9kWtenqK4kflZG1lGc=
gonum.org/v1/plot v0.11.0/go.mod h1:fH9YnKnDKax0u5EzHVXvhN5HJwtMFWIOLNuhgUahbCQ=
honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=

View file

@ -0,0 +1,117 @@
package main
import (
"fmt"
"github.com/dariubs/percent"
"gonum.org/v1/plot"
"gonum.org/v1/plot/plotter"
"gonum.org/v1/plot/plotutil"
"gonum.org/v1/plot/vg"
"io/ioutil"
"log"
"sort"
"strings"
)
type letter struct {
upperCase string
lowerCase string
count int
frequency float64
}
type letterList []letter
func (l letterList) Len() int {
return len(l)
}
func (l letterList) Less(i, j int) bool {
return l[i].frequency > l[j].frequency
}
func (l letterList) Swap(i, j int) {
l[i], l[j] = l[j], l[i]
}
const LettersInTheAlphabet = 26
const startUpperCase = 65
var letters = make([]letter, LettersInTheAlphabet)
func initLetterStruct() {
for i := 0; i < LettersInTheAlphabet; i++ {
letters[i].upperCase = string(rune(startUpperCase + i))
letters[i].lowerCase = string(rune(startUpperCase + i + 32))
}
}
func readFile(relativePath string) string {
content, err := ioutil.ReadFile(relativePath)
if err != nil {
log.Fatalln(err)
}
return string(content)
}
func countLetters(inputText string) int {
totalCount := 0
for i := 0; i < LettersInTheAlphabet; i++ {
letters[i].count +=
strings.Count(inputText, letters[i].lowerCase) +
strings.Count(inputText, letters[i].upperCase)
totalCount += letters[i].count
}
return totalCount
}
func calculateFrequency(totalCount int) {
for i := 0; i < LettersInTheAlphabet; i++ {
letters[i].frequency = percent.PercentOf(letters[i].count, totalCount)
}
}
func printResult() {
for i := 0; i < LettersInTheAlphabet; i++ {
l := letters[i]
fmt.Printf(
"The letter %s (%s) occurs %d times in the text and the frequencyArray in percent is %0.2f\n",
l.upperCase, l.lowerCase, l.count, l.frequency,
)
}
}
func plotResult() {
var count plotter.Values
for i := 0; i < LettersInTheAlphabet; i++ {
count = append(count, float64(letters[i].count))
}
p := plot.New()
p.Title.Text = "Letter count"
p.X.Label.Text = "letter"
p.Y.Label.Text = "count"
countBars, err := plotter.NewBarChart(count, vg.Points(LettersInTheAlphabet/2))
countBars.Color = plotutil.Color(2)
if err != nil {
log.Fatalln(err)
}
p.Add(countBars)
var xAxisNaming []string
for index := range letters {
xAxisNaming = append(xAxisNaming, letters[index].upperCase)
}
p.NominalX(xAxisNaming...)
if err := p.Save(25*vg.Centimeter, 15*vg.Centimeter, "barChart.png"); err != nil {
log.Fatalln(err)
}
}
func main() {
initLetterStruct()
//totalCount := countLetters(readFile("plaintext.txt"))
totalCount := countLetters(readFile("../part01-encrypt/output.txt"))
calculateFrequency(totalCount)
plotResult()
sort.Sort(letterList(letters))
printResult()
}

View file

@ -0,0 +1,17 @@
# Go parameters
GoCMD=go
GoBUILD=$(GoCMD) build
GoCLEAN=$(GoCMD) clean
GoTEST=$(GoCMD) test
GoMOD=$(GoCMD) mod
BINARY_NAME=tool
# To install GoLang please follow the installation instructions on https://go.dev/
all: build
build:
$(GoBUILD) -o $(BINARY_NAME) -v
clean:
$(GOCLEAN)
rm -f $(BINARY_NAME)
deps:
$(GoMOD) tidy

View file

@ -0,0 +1,2 @@
In cryptography, encryption is the process of encoding information. This process converts the original representation of the information, known as plaintext, into an alternative form known as ciphertext. Only authorized parties can decipher a ciphertext back to plaintext and access the original information. Encryption does not itself prevent interference but denies the intelligible content to a would-be interceptor. For technical reasons, an encryption scheme usually uses a pseudo-random encryption key generated by an algorithm. It is possible to decrypt the message without possessing the key, but, for a well-designed encryption scheme, considerable computational resources and skills are required. An authorized recipient can easily decrypt the message with the key provided by the originator to recipients but not to unauthorized users. Historically, various forms of encryption have been used to aid in cryptography. Early encryption techniques were often utilized in military messaging. Since then, new
techniques have emerged and become commonplace in all areas of modern computing. Modern encryption schemes utilize the concepts of public-key and symmetric-key. Modern encryption techniques ensure security because modern computers are inefficient at cracking the encryption.

View file

@ -0,0 +1,3 @@
module encrypt
go 1.18

View file

View file

@ -0,0 +1,40 @@
New Zealand's capital, Wellington, has been ranked one of the least affordable
cities in the world for buying a property. The picture is also grim for renters,
with a 12% rise in prices in the past year. That, along with increases in petrol
and food prices, has led many to consider moving to nearby Australia -
where they have the right to live and work.
Chris, a builder, his partner Harmony and their four daughters recently left
Wellington to start a new life in the Australian city of Brisbane.
Despite owning their home and earning reasonable salaries, they were still struggling.
"We have four kids, so it was expensive. We'd notice Australians saying you know the
cost of living is going up - but that was the cost five years ago in New Zealand,"
says Chris. Leaving New Zealand and the rest of her family was a
difficult decision for Harmony. But she says the move was necessary for the children.
"You can't make a living in New Zealand. There is no living. You just go backwards.
You don't get a choice if you want to live, you have to move, or
New Zealand has to change. I want a future for my children and there
is none in New Zealand," she says. The New Zealand government has tried
to increase some short-term measures like fuel subsidies and halving the cost
of public transport - but for many, it's not enough.
In Brescia, Italy, steel runs through the veins of the community.
In the past 15 years the industry has endured the financial crash and
the Covid-19 pandemic. Now, with the war in Ukraine and Covid lockdowns in China,
trade is being disrupted further. Mirella and Lucas met at a cast iron
foundry in Brescia. Their two steady wages are up against rising food, petrol
and energy costs. "With regard to electricity, we have recently suffered
like everyone else. Our bill has doubled - even though we are never at home",
says Mirella. "We are tightening our belts. Instead of saving a lot,
you'll save less," says Lucas. Orders at this cast iron foundry continue.
But a crucial source of raw materials from the south-eastern Ukrainian city of
Mariupol are in now short supply, after Russian troops occupied the region.
Mark Impraim owns a catering business in Ghana - one of the most expensive
countries to live in, in Africa. He shops for ingredients for one of his most
popular dishes -jollof rice - at a local market. But prices have doubled
in recent months. Mark looks at a bucket of tomatoes, dismayed at the price tag.
"[This box of tomatoes] used to be 20 cedis. Now it's going for 40," he says.
"I should double the price of the food I serve, but that would scare away customers.
I try to find a way around it by decreasing the quantity."
Among other rising costs eating into Mark's weekly budget is a supply
of drinking water. Sachets of water have increased in price twice in four months,
due to the devaluation of the cedi.
Water suppliers say passing the costs on to customers is unavoidable.

View file

@ -0,0 +1,95 @@
package main
import (
"flag"
"io/ioutil"
"log"
"os"
"regexp"
"strings"
"unicode"
)
const lettersInTheAlphabet = 26
const startUpperCase = 65
const endUpperCase = startUpperCase + lettersInTheAlphabet
const startLowerCase = 97
const endLowerCase = startLowerCase + lettersInTheAlphabet
type keyLetter struct {
upperCase string
position int32
}
func parseArguments() (string, string) {
var inputKey string
var inputFile string
flag.StringVar(&inputKey, "k", "", "Specify key word.")
flag.StringVar(&inputFile, "f", "", "Specify file to encrypt.")
flag.Parse()
return inputKey, inputFile
}
func readFile(relativePath string) string {
content, err := ioutil.ReadFile(relativePath)
if err != nil {
log.Fatalln(err)
}
return string(content)
}
func writeFile(relativePath string, message string) {
file, err := os.Create(relativePath)
if err != nil {
log.Fatalln(err)
}
defer file.Close()
file.WriteString(message)
}
func validateKeyWord(inputKey string) string {
reg, err := regexp.Compile("[^a-zA-Z]+")
if err != nil {
log.Fatalln(err)
}
processedString := reg.ReplaceAllString(inputKey, "")
return strings.ToUpper(processedString)
}
func initKeyWord(key string) []keyLetter {
var keyWord []keyLetter
for _, letter := range key {
keyWord = append(keyWord, keyLetter{
upperCase: string(letter),
position: letter - 'A',
})
}
return keyWord
}
func encryptMessage(keyWord []keyLetter, message string) string {
encrypted := ""
index := 0
for _, letter := range message {
if !unicode.IsLetter(letter) {
encrypted += string(letter)
} else {
keyWordIndex := index % len(keyWord)
newLetter := letter + keyWord[keyWordIndex].position
if (unicode.IsLower(letter) && newLetter >= endLowerCase) ||
(unicode.IsUpper(letter) && newLetter >= endUpperCase) {
newLetter -= lettersInTheAlphabet
}
encrypted += string(newLetter)
index += 1
}
}
return encrypted
}
func main() {
inputKey, inputFile := parseArguments()
message := readFile(inputFile)
keyWord := initKeyWord(validateKeyWord(inputKey))
writeFile("output.txt", encryptMessage(keyWord, message))
}

View file

@ -0,0 +1,17 @@
# Go parameters
GoCMD=go
GoBUILD=$(GoCMD) build
GoCLEAN=$(GoCMD) clean
GoTEST=$(GoCMD) test
GoMOD=$(GoCMD) mod
BINARY_NAME=tool
# To install GoLang please follow the installation instructions on https://go.dev/
all: build
build:
$(GoBUILD) -o $(BINARY_NAME) -v
clean:
$(GOCLEAN)
rm -f $(BINARY_NAME)
deps:
$(GoMOD) tidy

View file

@ -0,0 +1,40 @@
Spk Qmayhbv'k hldzbay, Dsddnyukwn, uhg twjy frvkrk cfw tq hym lrhgl skqcilaoss
uaytsj qn gos ogwwr wwr obmafl l diwpryhq. Lmp dzkthys ak fwgf orvt tgj wpbkmrf,
dwlz f 12% cwjm ia wfaujd we bhr wokl dpoi. Bhna, odgsr kzbh vuqjwfdsj qn clhjgq
lbu nobk djahpg, yis ylr essj hf koazwvww xcmqnt ac fwfcpp Iufafsdnl -
kymrr avwq mljv bhr ywyzy ec cqvr hbv otcy.
Tprvz, o tmnwrvz, hvz dsjyysi Paetcfq fyr kpevy tgmw oolohglfk jjnsebll ssxl
Bpzcqntacf lt dhrzt n uso dnqs zv tul Omkycocqaa jwlq tq Piqsohbw.
Vjddzbe bdbafl evvqr uvaw sso srznvuu jwfdceibyl gsdfcwva, tulm owwp gkqly zhjmlrzzvg.
"Jl vsnj qclz kvkg, kg ne kra ekwsfkngs. Nm'd avhauj Lijbrnswsfx dopqnt fcm cszk kpe
pvgl gk wwmqnt pg ygnyu lx - bha hzsy hoj bhr jckl ktjv genyg syt tb Emw Mlodsso,"
grgs Pofak. Qpomqnt Uso Rjlzrvd nur lzj csjb os osj xfxwcg wnz o
vakqwtclg ksuaxtce noe Oojetym. Sct fos ksdd hym mbcs osx ystmsfhfq xtc hym cupzvjjy.
"Mfc cnu'h espp o cqvvuu af Spk Qmayhbv. Lmpfv qs av zannyu. Pwu wbgl yt motswnyrk.
Qtf rfv't tlh s umzwtm is fcm ofyh kw lvcs, qgz somm tb tcnw, tc
Bve Zrhzsfi soj bo poofyj. T krvt n milmwp tfz ml jvadicse inq avwjj
tg ewnr pb Fwb Ksrtaak," gzw xlmj. Bhr Uso Rjlzrvd tvjwjsxseb hnz hjajo
hf qnpysskj dcdm suvfl-ljca dmafbfwk qtyv nurs gmtxtrzms nur zsqgweo tul qgky
zt gcbypq ljfyggwrg - iil xtc arvy, va'g fgy pbfcgu.
Pb Tjjdqzi, Ighzq, kypsc zuaz hzjtfuy bhr csafx zt kpe pvaemsthp.
Qn gos hsxe 15 mvirf avw asoijbrl ook wsoiimd gos xaslbtqay jfskm lbu
bhr Jcnai-19 aoelezpq. Fgb, hwkp tul ksj ny Ibzavus sfi Ncmqd yvqcvthbj qn Powfs,
ycoum if isafl owjzucasv xzchymr. Zpfwdql oel Lhjok eje ok i cnzh ajty
tfcnqym af Gcsjkin. Avwaw ekf atrhrq ofrsj irr bd syftbjb rvzwfy kzcu, xegycd
sso semrtf qgkyd. "Kzbh elusji ec vtepafaunem, nm hncs jwhpbkty fbtxwwpr
cqkr ljwjdzbv mlfl. Cmj gtzc paf kcmtqpr - vdea avgmls kv irr usnww lh ywmr",
zoqk Rtfvtln. "Ds sjj ewxptruwfy tff smlgz. Wfkypou wf fhjafl l zfb,
ybb'zd kfgs cmsf," zoqk Qfqra. Oeksjk fe hyqs phgl awzb wwuakfq utyhzvur.
Iil s hcitqay zcmjhp cw zaj tolwwtoca feva lzj dclbh-rhglwwy Ibzavuwsf hthp wf
Zhfamuzz rze vu bgo xscib shwddq, fqhvz Rhzgass effwpf vqumutsu bhr ysyaty.
Arzk Vtdjsnx cnvs n jolwwtbx jufpbwkx tb Xpaah - cfw tq hym mbzh wpupbjqvr
jcmfycwva tb swnw ny, we Ifepqs. Zj dvfxs svf aflcsuqeaag xgw zbv wf upg egxe
dfxuyhf vaxssj -royscx jnns - rb a yvqsd rlfbmt. Obh hjnnsj pail rgmgwsu
qn elqwfy xcebhf. Tojc qzcba ag h pmupph fn tbtolgjd, rzamnfsv sy evv xrvjs lsl.
"[Evza bbe cx ltxokwef] bgwv yz pv 20 keqpg. Fgb th'j oovuu xgw 40," ss jiyf.
"P gzgzwr uwuoss lzj afzke bm hzw kzcu Q sryjw, tze hyit jvidv xnoim ajhm umxecdmrf.
P hjq yz tzvd n doq swziel ig im vwhcsraian hzw vfoebigf."
Oegsr ckpee ywkasr qfatf lolasr webo Zhfc'k bpsbty obrywy tg r aucwzq
gk ofzvkvuu osypf. Jiculhk gk hokmr uhjw asnfvisrk wf hwtqv bwvjs af kzii uoaavk,
vzp hf bhr ksnsqfokqoa vt lzj nsuq.
Wnasj kzadcqeez gsq ulgjqnt avw utdhj wn gv qmkyzavzs vz ifsazwuibyl.