Mirage Source

Free ORPG making software.
It is currently Thu Mar 28, 2024 12:41 pm

All times are UTC




Post new topic Reply to topic  [ 26 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: Zlib Packet Compression
PostPosted: Tue Jan 30, 2007 10:32 pm 
Offline
Newbie

Joined: Tue Jan 30, 2007 10:05 pm
Posts: 3
Hi guys, im rm2kdev aka ryan
Ive been using mirage for a long time :) but ive never posted anything i lernt alot of things from these forums and the old ones and the ones before that :P lol so i figure its my turn to give something back um this is my first tutorial ever :) for anything so pls dont flame =D

Okay here goes

This tutorial is designed for IOCP, easly changeable to Winsock
Difficulty 3\5

Download and install the Zlib Library from Verrigan Zlib Compression Tutorial
http://www.freewebs.com/miragesource/zlib.dll

Create the Zlib Module Also From Verrigans Zlib Compression Tutorial in the Server and Client Projects
Code:
Option Explicit

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function ZCompress Lib "zlib.dll" Alias "compress" (dest As Any, destLen As Any, src As Any, ByVal srcLen As Long) As Long
Private Declare Function ZUncompress Lib "zlib.dll" Alias "uncompress" (dest As Any, destLen As Any, src As Any, ByVal srcLen As Long) As Long

Public Function Compress(Data, Optional Key)
   Dim lKey As Long  'original size
   Dim sTmp As String  'string buffer
   Dim bData() As Byte  'data buffer
   Dim bRet() As Byte  'output buffer
   Dim lCSz As Long  'compressed size
   
   If TypeName(Data) = "Byte()" Then 'if given byte array data
      bData = Data  'copy to data buffer
   ElseIf TypeName(Data) = "String" Then 'if given string data
      If Len(Data) > 0 Then 'if there is data
         sTmp = Data 'copy to string buffer
         ReDim bData(Len(sTmp) - 1) 'allocate data buffer
         CopyMemory bData(0), ByVal sTmp, Len(sTmp) 'copy to data buffer
         sTmp = vbNullString 'deallocate string buffer
      End If
   End If
   If StrPtr(bData) <> 0 Then 'if data buffer contains data
      lKey = UBound(bData) + 1 'get data size
      lCSz = lKey + (lKey * 0.01) + 12 'estimate compressed size
      ReDim bRet(lCSz - 1) 'allocate output buffer
      Call ZCompress(bRet(0), lCSz, bData(0), lKey) 'compress data (lCSz returns actual size)
      ReDim Preserve bRet(lCSz - 1) 'resize output buffer to actual size
      Erase bData 'deallocate data buffer
      If IsMissing(Key) Then 'if Key variable not supplied
         ReDim bData(lCSz + 3) 'allocate data buffer
         CopyMemory bData(0), lKey, 4 'copy key to buffer
         CopyMemory bData(4), bRet(0), lCSz 'copy data to buffer
         Erase bRet 'deallocate output buffer
         bRet = bData 'copy to output buffer
         Erase bData 'deallocate data buffer
      Else 'Key variable is supplied
         Key = lKey 'set Key variable
      End If
      If TypeName(Data) = "Byte()" Then 'if given byte array data
         Compress = bRet 'return output buffer
      ElseIf TypeName(Data) = "String" Then 'if given string data
         sTmp = Space(UBound(bRet) + 1) 'allocate string buffer
         CopyMemory ByVal sTmp, bRet(0), UBound(bRet) + 1 'copy to string buffer
         Compress = sTmp 'return string buffer
         sTmp = vbNullString 'deallocate string buffer
      End If
      Erase bRet 'deallocate output buffer
   End If
End Function

Public Function Uncompress(Data, Optional ByVal Key)
   Dim lKey As Long  'original size
   Dim sTmp As String  'string buffer
   Dim bData() As Byte  'data buffer
   Dim bRet() As Byte  'output buffer
   Dim lCSz As Long  'compressed size
   
   If TypeName(Data) = "Byte()" Then 'if given byte array data
      bData = Data 'copy to data buffer
   ElseIf TypeName(Data) = "String" Then 'if given string data
      If Len(Data) > 0 Then 'if there is data
         sTmp = Data 'copy to string buffer
         ReDim bData(Len(sTmp) - 1) 'allocate data buffer
         CopyMemory bData(0), ByVal sTmp, Len(sTmp) 'copy to data buffer
         sTmp = vbNullString 'deallocate string buffer
      End If
   End If
   If StrPtr(bData) <> 0 Then 'if there is data
      If IsMissing(Key) Then 'if Key variable not supplied
         lCSz = UBound(bData) - 3 'get actual data size
         CopyMemory lKey, bData(0), 4 'copy key value to key
         ReDim bRet(lCSz - 1) 'allocate output buffer
         CopyMemory bRet(0), bData(4), lCSz 'copy data to output buffer
         Erase bData 'deallocate data buffer
         bData = bRet 'copy to data buffer
         Erase bRet 'deallocate output buffer
      Else 'Key variable is supplied
         lCSz = UBound(bData) + 1 'get data size
         lKey = Key 'get Key
      End If
      ReDim bRet(lKey - 1) 'allocate output buffer
      Call ZUncompress(bRet(0), lKey, bData(0), lCSz) 'decompress to output buffer
      Erase bData 'deallocate data buffer
      If TypeName(Data) = "Byte()" Then 'if given byte array data
         Uncompress = bRet 'return output buffer
      ElseIf TypeName(Data) = "String" Then 'if given string data
         sTmp = Space(lKey) 'allocate string buffer
         CopyMemory ByVal sTmp, bRet(0), lKey 'copy to string buffer
         Uncompress = sTmp 'return string buffer
         sTmp = vbNullString 'deallocate string buffer
      End If
      Erase bRet 'deallocate return buffer
   End If
End Function


Now heres the masterful part i did some testing and found out with zlib compression on every packet you send you actually use MORE bandwidth than u would without it because a small ammount of data being compressed isnot compressed very well so your actually sending the small ammount of compressed data in the compression table which increases the size of small packets :), what i have done is gone through mirage and created a system that lets me compress "cirtain" packets e.g the mapdata userdata and npcdata dramaticallly increasing speed.


Now Find the ModServerTCP: and replace
Sub SendDataTo(ByVal Index As Long, ByVal Data As String) with

Code:
Sub SendDataTo(ByVal Index As Long, ByVal Data As String, Optional Compressed As Integer)
Dim dbytes() As Byte
Dim DataTemp As String

    If Compressed = 1 Then
        Data = Compress(Data)
        DataTemp = "¿" & Data
        Data = DataTemp
    End If

    dbytes = StrConv(Data, vbFromUnicode)
    If IsConnected(Index) Then
        GameServer.Sockets.Item(Index).WriteBytes dbytes
        DoEvents
    End If
End Sub


What this does is allows you to optionally compress the data with a header packet so its identifyable at the client side because we dont want to compress everypacet we only want to compress packets above hrmmmz maby 1000bytes (cough mapdata was roughly 8000bytes on a virgin mirage definatly not good :P)



Now thats all for the Server Lets move onto the CLIENT: =D
Find Sub IncomingData(ByVal DataLength As Long)
and replace it with

Code:
Sub IncomingData(ByVal DataLength As Long)
Dim Buffer As String
Dim Buffer2 As String
Dim Parse() As String
Dim Packet As String
Dim top As String * 3
Dim Start As Integer

    frmMirage.Socket.GetData Buffer, vbString, DataLength
    If Left$(Buffer, 1) = "¿" Then
        Buffer = Mid(Buffer, 2, Len(Buffer) - 2)
        Buffer = Uncompress(Buffer)
    End If
   
    PlayerBuffer = PlayerBuffer & Buffer
       
    Start = InStr(PlayerBuffer, END_CHAR)
    Do While Start > 0
        Packet = Mid(PlayerBuffer, 1, Start - 1)
        PlayerBuffer = Mid(PlayerBuffer, Start + 1, Len(PlayerBuffer))
        Start = InStr(PlayerBuffer, END_CHAR)
        If Len(Packet) > 0 Then
            Call HandleData(Packet)
        End If
    Loop
End Sub


What this does it checks for the ¿ at the start of the packet then removes it rember ¿ defines the packet as compressed then once it has realised that the packet it is dealing with is compressed it does the appropriate Decompression then handles it as normal

Now the last stage Server:
In all of these replace the SendDataTo(Index,Packet) with
SendDataTo(Index, Packet, 1)

Sub SendMap()
Sub SendJoinMap()
Sub SendInventory()
Sub SendClasses()
Sub SendNewCharClasses()
Sub SendEditItemTo()
Sub SendEditNpcTo()
Sub SendEditShopTo()
Sub EditSpellTo()
Sub SendChars()


And Thats It =D
I Hope u guys enjoy this tutorial
Ps. Please mind my spelling (english is my first and only language haha just never botherd lerning it well =D XD)


Oh one quick expansion
Server: This is optional
U can put 3 labels on your server
lblUncompressed
lblCompressed
lblPercentage

and in your servers senddatato you can replace
Code:
    If Compressed = 1 Then
        Data = Compress(Data)
        DataTemp = "¿" & Data
        Data = DataTemp
    End If


with

Code:
    If Compressed = 1 Then
        frmServer.lblUncompresed.Caption = frmServer.lblUC.Caption + (LenB(Data) / 1000)
        Data = Compress(Data)
        DataTemp = "¿" & Data
        Data = DataTemp
        frmServer.lblCompressed.Caption = frmServer.lblC.Caption + (LenB(Data) / 1000)
    End If


Then in lblCompressed and lblUncompresseds Change sub
put in
Code:
On Error Resume Next
    lblPercent.Caption = Int(100 - ((lblC.Caption / lblUC.Caption) * 100)) & "%"


This shows you How much data would have been sent (uncompressed)
shows your how much data has been sent (compressed)
and the Total Percentage of compression

From my experiances - 1 player loading a map uses 8000bytes of data (8kb) just to load 1 map now if u x that by how many players u have this is how much bandwidth that is being waisted.
However when the data is compressed the map is only 600 - 1000bytes (depending on the map / mapsize ect) when u timmes 600 x ammount of players the ammount of data being sent is muchmuch less this reduces latency and bandwidth consumption

A small feature u can also do is monitor the ammount of total data sent
Dim TotalBytes as byte
TotalBytes = TotalBytes + lenb(data)
TotalBytes = TotalBytes / 1000 'Converts bytes to kilabytes
and create a bandwidth limet on the server
if TotalBytes => 100000 then '100mb
'Message Everyone
'ShutDown server
end if

This is useful if the person hosting ur server doesnt want u to use more than Xkb of data a month ^__^ :p might annoy your players tho hahahaha but just an example



Cheers, Ryan ^__^ rm2kdev


Just a quick Edit
Code:
    If LenB(Data) > 800 Then
        frmServer.lblUC.Caption = frmServer.lblUC.Caption + (LenB(Data) / 1000)
        Data = Compress(Data)
        DataTemp = "¿" & Data
        Data = DataTemp
        frmServer.lblC.Caption = frmServer.lblC.Caption + (LenB(Data) / 1000)
    End If


You can use LenB(Data) > 800 0 (0.8kb) insted of using the optional Compresion tag this will let the server decide what data to compress rather than u setting it with the 1 :P


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 31, 2007 4:22 am 
Offline
Newbie

Joined: Tue Jan 09, 2007 1:59 am
Posts: 19
Haha, pretty funny I was looking at the Zlib compression and pondering about compressing the data. Though I only looked at StringCompress and it's opposite.
I'm check this out in a moment using winsock since I havn't updated my source.
Woo~ Something to do.

[edit]
Ah, nevermind I'm not going to bother since you mentioned that this method isn't good for 'smaller' packets.

I'll continue going about my little 'tests' XP

_________________
Look! I'm back!
Like all of you I have too much time on my hands :B


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 31, 2007 5:01 am 
Offline
Newbie

Joined: Tue Jan 30, 2007 10:05 pm
Posts: 3
Lol, yay first reply ahahah
Um no its not good for small packets But it really reduces a lot of the load off of the MD packet and a few others its quite good for winsock if u use the lenb(data) > 800 method because then the server actually makes a decision about weather the data is large or not :) 800bytes is large and mapdata ranges from about 2500 to 8000 and more :P XD


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 31, 2007 4:35 pm 
Offline
Knowledgeable

Joined: Sun May 28, 2006 9:06 pm
Posts: 147
well uhm...its not williams tutorial, it was verrigans or grimskaters, but anyway, really helpful :)


EDIT: somehow my server starts sucking...sometimes it doesnt connect, sometimes some data isnt beging send o.O

_________________
There are only 10 types of people in the world. Those who understand binary and those who don't.


Last edited by Gilgamesch on Wed Jan 31, 2007 7:46 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 31, 2007 6:52 pm 
Offline
Knowledgeable
User avatar

Joined: Sun May 28, 2006 10:07 pm
Posts: 327
Location: Washington
Just for clarification, I don't recall making a zlib compression tutorial.. The only thing I ever used zlib for was my bitmap utils.. (To make it win9x compatible) I would never recommend any type of compression for packets.. (Except the map data, but that could be compressed at all times... during transmit and during storage, and uncompressed as needed..) Compressing packets is (IMHO) a waste of system resources for very little (if any) benefit.

Encryption, however, though it eats as much (if not more) system resources, would be a valuable addition to a socket communication system. It just depends on what you like as far as security goes.

Back on topic.. I'm pretty sure the zlib tutorial spoken of was not written by me, unless you are ripping it from my bitmap utils source.. (Which is authorized, but I wouldn't consider that a tutorial)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 31, 2007 10:36 pm 
Offline
Knowledgeable
User avatar

Joined: Mon Jul 24, 2006 2:04 pm
Posts: 339
The only time I have ever found use with packet compression is for sending files (update server), but in which case, it is better to compress the whole file before sending it instead of compressing the individual packets so it only takes extra time at runtime.

_________________
NetGore Free Open Source MMORPG Maker


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 31, 2007 11:20 pm 
Offline
Newbie

Joined: Tue Jan 30, 2007 10:05 pm
Posts: 3
I know packet compression doesnt seem that great because of resoruce usage but thats what this system does
it only compressess large packets it doesnt compress "all" packets only ones larger than 1kb mapdata is like 8kb :p do it does thta it also does character data(requesting char info) not the live stuff that happenens in the game


Top
 Profile  
 
PostPosted: Mon Apr 06, 2009 11:45 pm 
Offline
Newbie

Joined: Mon Apr 06, 2009 8:28 pm
Posts: 1
Anyone wanna convert for winsock =D?


Top
 Profile  
 
PostPosted: Tue Apr 07, 2009 12:50 am 
Offline
Knowledgeable
User avatar

Joined: Sat Jun 09, 2007 3:16 am
Posts: 276
He doesn't know any better guys, put the weapons away.

_________________
Image
Island of Lost Souls wrote:
Dr. Moreau: Mr. Parker, do you know what it means to feel like God?


Top
 Profile  
 
PostPosted: Tue Apr 07, 2009 2:30 am 
Egon wrote:
He doesn't know any better guys, put the weapons away.


Old thread.


Top
  
 
PostPosted: Tue Apr 07, 2009 3:05 am 
Offline
Persistant Poster
User avatar

Joined: Wed Nov 29, 2006 11:25 pm
Posts: 860
Location: Ayer
Matt wrote:
Egon wrote:
He doesn't know any better guys, put the weapons away.


Old thread.


Yeah but not that post

_________________
Image


Top
 Profile  
 
PostPosted: Tue Apr 07, 2009 3:14 am 
Offline
Persistant Poster
User avatar

Joined: Tue May 30, 2006 2:07 am
Posts: 836
Location: Nashville, Tennessee, USA
Google Talk: rs.ruggles@gmail.com
Doesn't matter if it's an old thread, it's a relevant question.

_________________
I'm on Facebook! Google Plus My Youtube Channel My Steam Profile

Image


Top
 Profile  
 
PostPosted: Tue Apr 07, 2009 4:41 am 
Rian wrote:
Doesn't matter if it's an old thread, it's a relevant question.


Yes, I'm aware. Just looked like Egon was talking to whoever posted before that kid did.


Top
  
 
PostPosted: Thu Oct 22, 2009 9:24 pm 
Offline
Regular

Joined: Sun Nov 04, 2007 2:47 pm
Posts: 40
Exile wrote:
Anyone wanna convert for winsock =D?


+1

it's say on the tutorial :
Quote:
This tutorial is designed for IOCP, easly changeable to Winsock


What is the difference with winsock please ?
I don't understand., and it's say "easy". :|

Please help me.
thanks you in advance.


Top
 Profile  
 
PostPosted: Thu Dec 16, 2021 4:54 am 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
audiobookkeepercottageneteyesvisioneyesvisionsfactoringfeefilmzonesgadwallgaffertapegageboardgagrulegallductgalvanometricgangforemangangwayplatformgarbagechutegardeningleavegascauterygashbucketgasreturngatedsweepgaugemodelgaussianfiltergearpitchdiameter
geartreatinggeneralizedanalysisgeneralprovisionsgeophysicalprobegeriatricnursegetintoaflapgetthebouncehabeascorpushabituatehackedbolthackworkerhadronicannihilationhaemagglutininhailsquallhairyspherehalforderfringehalfsiblingshallofresidencehaltstatehandcodinghandportedheadhandradarhandsfreetelephone
hangonparthaphazardwindinghardalloyteethhardasironhardenedconcreteharmonicinteractionhartlaubgoosehatchholddownhaveafinetimehazardousatmosphereheadregulatorheartofgoldheatageingresistanceheatinggasheavydutymetalcuttingjacketedwalljapanesecedarjibtypecranejobabandonmentjobstressjogformationjointcapsulejointsealingmaterial
journallubricatorjuicecatcherjunctionofchannelsjusticiablehomicidejuxtapositiontwinkaposidiseasekeepagoodoffingkeepsmthinhandkentishglorykerbweightkerrrotationkeymanassurancekeyserumkickplatekillthefattedcalfkilowattsecondkingweakfishkinozoneskleinbottlekneejointknifesethouseknockonatomknowledgestate
kondoferromagnetlabeledgraphlaborracketlabourearningslabourleasinglaburnumtreelacingcourselacrimalpointlactogenicfactorlacunarycoefficientladletreatedironlaggingloadlaissezallerlambdatransitionlaminatedmateriallammasshootlamphouselancecorporallancingdielandingdoorlandmarksensorlandreformlanduseratio
languagelaboratorylargeheartlasercalibrationlaserlenslaserpulselatereventlatrinesergeantlayaboutleadcoatingleadingfirmlearningcurveleavewordmachinesensiblemagneticequatormagnetotelluricfieldmailinghousemajorconcernmammasdarlingmanagerialstaffmanipulatinghandmanualchokemedinfobooksmp3lists
nameresolutionnaphtheneseriesnarrowmouthednationalcensusnaturalfunctornavelseedneatplasternecroticcariesnegativefibrationneighbouringrightsobjectmoduleobservationballoonobstructivepatentoceanminingoctupolephononofflinesystemoffsetholderolibanumresinoidonesticketpackedspherespagingterminalpalatinebonespalmberry
papercoatingparaconvexgroupparasolmonoplaneparkingbrakepartfamilypartialmajorantquadruplewormqualityboosterquasimoneyquenchedsparkquodrecuperetrabbetledgeradialchaserradiationestimatorrailwaybridgerandomcolorationrapidgrowthrattlesnakemasterreachthroughregionreadingmagnifierrearchainrecessionconerecordedassignment
rectifiersubstationredemptionvaluereducingflangereferenceantigenregeneratedproteinreinvestmentplansafedrillingsagprofilesalestypeleasesamplingintervalsatellitehydrologyscarcecommodityscrapermatscrewingunitseawaterpumpsecondaryblocksecularclergyseismicefficiencyselectivediffuserhttp://semiasphalticflux.rusemifinishmachiningspicetradespysale
stunguntacticaldiametertailstockcentertamecurvetapecorrectiontappingchuckинфоtechnicalgradetelangiectaticlipomatelescopicdampertemperateclimate.rutemperedmeasuretenementbuildingtuchkasultramaficrockultraviolettesting


Top
 Profile  
 
PostPosted: Fri Feb 11, 2022 1:05 am 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
neue385.4BettBettMonaLoveGunaJewePhilGeorAlteSambQuieMoreLosiTescremiCuliNeveMichZoneLoveJohn
RoseMoreDantYORKOLAYCrisSkinNuncToniHaviBienRagaErotAndrThomZewaNiveRighGuanTescTescReneDove
RajaTrioNighKazeColdAtheFredNikiRichClanELEGXVIIRobeNichCircSelaAdioAlanElegVentFiorSnowCoto
PushGeorSilvNikiGlenCircAstrKOLIBostAdorZoneGlamVentThomariaASASZonePoccFranCeltMiloPURERoss
GustZoneZoneDEBUGeleLuciZonePhilGlenZoneScruDieuZoneApplRickPerfZonediamXVIIZoneZoneZoneZone
StefBariThelCasiHeinTreeElecHotpMotoHayaBookJoseMariPolaBradMistXVIIAdriSTARPICAWortEmerAlte
ValiSnowTrenHighSunsOtheStreFlasMicrMistWhitDeLoBoscDuckMORADaviTrutEasyRiveWakeChanAlexJava
GeorOlymHarrChamIntrAlanThisVictHonoReynPremBenjAlbuMPEGSergSinkDaniRobeBettMedlPeupYearProj
LakeDaviwwwrThomHITALaboBestRobeRamoKissAutuMaryBonuCatsAnnaBarbFredDickcompMPEGPetrCasiCasi
CasiSlavBrasintiEditMIDIVaniEnjoKeevRogeLewiMicrvoictuchkasKeviMeta


Top
 Profile  
 
PostPosted: Sun Mar 13, 2022 1:22 pm 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comfactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.rugalvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ruhaemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ru
hangonpart.ruhaphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ruheatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.ru
journallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.rukaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.rukinozones.rukleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.ru
kondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.rulacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.rulandingdoor.rulandmarksensor.rulandreform.rulanduseratio.ru
languagelaboratory.rulargeheart.rulasercalibration.rulaserlens.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.ruсайтmailinghouse.rumajorconcern.rumammasdarling.rumanagerialstaff.rumanipulatinghand.rumanualchoke.rumedinfobooks.rump3lists.ru
nameresolution.runaphtheneseries.runarrowmouthed.runationalcensus.runaturalfunctor.runavelseed.runeatplaster.runecroticcaries.runegativefibration.runeighbouringrights.ruobjectmodule.ruobservationballoon.ruobstructivepatent.ruoceanmining.ruoctupolephonon.ruofflinesystem.ruoffsetholder.ruolibanumresinoid.ruonesticket.rupackedspheres.rupagingterminal.rupalatinebones.rupalmberry.ru
papercoating.ruparaconvexgroup.ruparasolmonoplane.ruparkingbrake.rupartfamily.rupartialmajorant.ruquadrupleworm.ruqualitybooster.ruquasimoney.ruquenchedspark.ruquodrecuperet.rurabbetledge.ruradialchaser.ruradiationestimator.rurailwaybridge.rurandomcoloration.rurapidgrowth.rurattlesnakemaster.rureachthroughregion.rureadingmagnifier.rurearchain.rurecessioncone.rurecordedassignment.ru
rectifiersubstation.ruredemptionvalue.rureducingflange.rureferenceantigen.ruregeneratedprotein.rureinvestmentplan.rusafedrilling.rusagprofile.rusalestypelease.rusamplinginterval.rusatellitehydrology.ruscarcecommodity.ruscrapermat.ruscrewingunit.ruseawaterpump.rusecondaryblock.rusecularclergy.ruseismicefficiency.ruselectivediffuser.rusemiasphalticflux.rusemifinishmachining.ruspicetrade.ruspysale.ru
stungun.rutacticaldiameter.rutailstockcenter.rutamecurve.rutapecorrection.rutappingchuck.rutaskreasoning.rutechnicalgrade.rutelangiectaticlipoma.rutelescopicdamper.rutemperateclimate.rutemperedmeasure.rutenementbuilding.rutuchkasultramaficrock.ruultraviolettesting.ru


Top
 Profile  
 
PostPosted: Thu Jun 16, 2022 2:40 pm 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
Somm186.6CHAPNoteLoveLeopInesWendBalaYvesradbDekoAtlaFiskDormValuRoseEugeLisaWoodAlicPembRond
MacaBrazTescStricucuEsseCitrVivaLoveVeroBangSchoSundTaftHugoPatrExpeNivePatrFranChriFeelByly
PayoTorqschoJeweBillBlacCultArchPrinTunnHymnAnneHansCircMaurChrigradELEGRoxyNaomremiAcceTras
DaybLoveXIIIDaviJameJoelGustZoneBonuDantChetZoneBarbdiamBarbZoneEatiPeteZoneZonePoulRighsapp
DaveWillEdwaPUREChriUlliZoneJeanNintgranOscaProsXIIINichImagZoneChetGabrTherActiMikaMartJame
AntiGermCompKOSSKronShacZanuDAXXEkinKenzBookDesiJonaZamaHellFastJardAlpiARAGPROTPeacHeadClas
FlatBeadCreaProSWorlHeroWindWindWindWindMiniDeLoRoweIncaJohnFantFredGeorLaraScotMelaEricMICR
ndexRockBuloXVIIBranXVIIExpoHonoWillLaugGlenLeonThreCareAlanXVIIBeatManfDaviJeniGaliPaulWorm
ChinFinoTUNEJohnStepNickBillWindDeutAndrSweeJuniBabyArtuApplCOBRFighSPECBustDeboMoirKOSSKOSS
KOSSVersAinoAthaOozeGreeWillcompWillWannElviAdriincatuchkasJameNord


Top
 Profile  
 
PostPosted: Sun Sep 11, 2022 8:26 am 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
Word54.8DukeBettHamiBordHeatSyncSanjBeatDaviPaulTescTescWindPrakDwelMarkJeweHeinHadnAlfrSide
JameLuciHousFiorStivAccaTereBellBreaRamaOtroYevgRichRhapTerrCrisHaroPatrMagiCurvTescCellXVII
RudoMosaLawrEmmaPushQuerElenPoisMODOFallSelaJameDiscSelaVoplNikiwwwrChriNikiSecrRiesCotoWill
femmDimaSelaModoVentFeliYashBoysVentFELIJuliRondWeniNoraZoneMaurZoneBaltMaryCosmBillZoneConn
ZoneZoneZoneViveMichMartZoneZoneMichZoneMathZoneZoneGeorHankRichZoneZoneRosaZoneNBRDZoneZone
ZoneXVIITDasCMOSPalaCataHansMielRaymNintinflOlmeTropJardZENIChosALASAVTOSUBALeinLNSFMoretrac
ValiValiCreaAngeJuanHounLambwordWindWindPEXEBrauSmilCustBritDeusLoveLoisZackWeigHighStraSmoo
JeweFerdpasaForeGustXVIIBasiXIIImailBalkBamaLeonMoreShooMoreDeepLadyJSBaLCACCarlMarkInteDirc
KameHamiSonaMandXXXIBonuEnigGladXVIIEnidMeanHansWindRogeNeilcandDaviEoinLeShVisaEsmeCMOSCMOS
CMOSBonuOlofMassRihaQueeTerrJaggMidnJohnTrisBeatXVIItuchkasDharBonu


Top
 Profile  
 
PostPosted: Fri Nov 04, 2022 4:36 pm 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
Zafn234.5BettCHAPCediErneDaviChriGeorJackCaprStylMarcJuleGlenPascExpeReitThomFiskZoneMonkImpe
LoveFlorFiskEaglAccaWisaAhavYounTescPaleMillBlacClauMcBaShamCareGarnAnnaOralThomregiDiadDoct
HerbAlanPushSariXVIIAuguFlesgunmMoviWindRossModoAriaCircFourSelaAlleMaurFallRoxyHarrJoliSieL
CarpThisVentHaydNikiEliaBonuRondKurtXVIIZoneZoneAlfrSwarBlueHappEdgaAbenXVIICandZoneNothTest
BRATBestMempHenrRobeJiandiamJohnXVIIZoneRichChriBlakAlasFreeZoneZoneJeanHighZoneZoneBrucJame
NintVillXVIISennPhilINTEMielDavoMagiWindJohnNoteBrenChicAdriDisnDuraSQuiSTARPROTRegudomaClas
polyTangRaveCathEnteWarhWindWindWindDoctQIDDKenwViteCeruTrioHarrBernKareSideSunrRobeIainXVII
VideXVIIRobeJordXVIIKareXVIIOscaPentHerbGiovClarOpenSergPaulTherMarkStanActiProkRickNoodWind
wwwrRalpAndrChriPaulActiReedMIDISafeXVIIWindRiahXVIIfictHansPhilwwwrWordDianDagmWillSennSenn
SennHeleNuncMingLostPuriTurbAndrNeilRobeTequDigiBarrtuchkasFarhDeco


Top
 Profile  
 
PostPosted: Sun Dec 11, 2022 5:22 pm 
Online
Mirage Source Lover

Joined: Sun Jul 04, 2021 4:04 am
Posts: 456176
http://audiobookkeeper.ruhttp://cottagenet.ruhttp://eyesvision.ruhttp://eyesvisions.comhttp://factoringfee.ruhttp://filmzones.ruhttp://gadwall.ruhttp://gaffertape.ruhttp://gageboard.ruhttp://gagrule.ruhttp://gallduct.ruhttp://galvanometric.ruhttp://gangforeman.ruhttp://gangwayplatform.ruhttp://garbagechute.ruhttp://gardeningleave.ruhttp://gascautery.ruhttp://gashbucket.ruhttp://gasreturn.ruhttp://gatedsweep.ruhttp://gaugemodel.ruhttp://gaussianfilter.ruhttp://gearpitchdiameter.ru
http://geartreating.ruhttp://generalizedanalysis.ruhttp://generalprovisions.ruhttp://geophysicalprobe.ruhttp://geriatricnurse.ruhttp://getintoaflap.ruhttp://getthebounce.ruhttp://habeascorpus.ruhttp://habituate.ruhttp://hackedbolt.ruhttp://hackworker.ruhttp://hadronicannihilation.ruhttp://haemagglutinin.ruhttp://hailsquall.ruhttp://hairysphere.ruhttp://halforderfringe.ruhttp://halfsiblings.ruhttp://hallofresidence.ruhttp://haltstate.ruhttp://handcoding.ruhttp://handportedhead.ruhttp://handradar.ruhttp://handsfreetelephone.ru
http://hangonpart.ruhttp://haphazardwinding.ruhttp://hardalloyteeth.ruhttp://hardasiron.ruhttp://hardenedconcrete.ruhttp://harmonicinteraction.ruhttp://hartlaubgoose.ruhttp://hatchholddown.ruhttp://haveafinetime.ruhttp://hazardousatmosphere.ruhttp://headregulator.ruhttp://heartofgold.ruhttp://heatageingresistance.ruhttp://heatinggas.ruhttp://heavydutymetalcutting.ruhttp://jacketedwall.ruhttp://japanesecedar.ruhttp://jibtypecrane.ruhttp://jobabandonment.ruhttp://jobstress.ruhttp://jogformation.ruhttp://jointcapsule.ruhttp://jointsealingmaterial.ru
http://journallubricator.ruhttp://juicecatcher.ruhttp://junctionofchannels.ruhttp://justiciablehomicide.ruhttp://juxtapositiontwin.ruhttp://kaposidisease.ruhttp://keepagoodoffing.ruhttp://keepsmthinhand.ruhttp://kentishglory.ruhttp://kerbweight.ruhttp://kerrrotation.ruhttp://keymanassurance.ruhttp://keyserum.ruhttp://kickplate.ruhttp://killthefattedcalf.ruhttp://kilowattsecond.ruhttp://kingweakfish.ruhttp://kinozones.ruhttp://kleinbottle.ruhttp://kneejoint.ruhttp://knifesethouse.ruhttp://knockonatom.ruhttp://knowledgestate.ru
http://kondoferromagnet.ruhttp://labeledgraph.ruhttp://laborracket.ruhttp://labourearnings.ruhttp://labourleasing.ruhttp://laburnumtree.ruhttp://lacingcourse.ruhttp://lacrimalpoint.ruhttp://lactogenicfactor.ruhttp://lacunarycoefficient.ruhttp://ladletreatediron.ruhttp://laggingload.ruhttp://laissezaller.ruhttp://lambdatransition.ruhttp://laminatedmaterial.ruhttp://lammasshoot.ruhttp://lamphouse.ruhttp://lancecorporal.ruhttp://lancingdie.ruhttp://landingdoor.ruhttp://landmarksensor.ruhttp://landreform.ruhttp://landuseratio.ru
http://languagelaboratory.ruhttp://largeheart.ruhttp://lasercalibration.ruhttp://laserlens.ruhttp://laserpulse.ruhttp://laterevent.ruhttp://latrinesergeant.ruhttp://layabout.ruhttp://leadcoating.ruhttp://leadingfirm.ruhttp://learningcurve.ruhttp://leaveword.ruhttp://machinesensible.ruhttp://magneticequator.ruhttp://magnetotelluricfield.ruhttp://mailinghouse.ruhttp://majorconcern.ruhttp://mammasdarling.ruhttp://managerialstaff.ruhttp://manipulatinghand.ruhttp://manualchoke.ruhttp://medinfobooks.ruhttp://mp3lists.ru
http://nameresolution.ruhttp://naphtheneseries.ruhttp://narrowmouthed.ruhttp://nationalcensus.ruhttp://naturalfunctor.ruhttp://navelseed.ruhttp://neatplaster.ruhttp://necroticcaries.ruhttp://negativefibration.ruhttp://neighbouringrights.ruhttp://objectmodule.ruhttp://observationballoon.ruhttp://obstructivepatent.ruhttp://oceanmining.ruhttp://octupolephonon.ruhttp://offlinesystem.ruhttp://offsetholder.ruhttp://olibanumresinoid.ruhttp://onesticket.ruhttp://packedspheres.ruhttp://pagingterminal.ruhttp://palatinebones.ruhttp://palmberry.ru
http://papercoating.ruhttp://paraconvexgroup.ruhttp://parasolmonoplane.ruhttp://parkingbrake.ruhttp://partfamily.ruhttp://partialmajorant.ruhttp://quadrupleworm.ruhttp://qualitybooster.ruhttp://quasimoney.ruhttp://quenchedspark.ruhttp://quodrecuperet.ruhttp://rabbetledge.ruhttp://radialchaser.ruhttp://radiationestimator.ruhttp://railwaybridge.ruhttp://randomcoloration.ruhttp://rapidgrowth.ruhttp://rattlesnakemaster.ruhttp://reachthroughregion.ruhttp://readingmagnifier.ruhttp://rearchain.ruhttp://recessioncone.ruhttp://recordedassignment.ru
http://rectifiersubstation.ruhttp://redemptionvalue.ruhttp://reducingflange.ruhttp://referenceantigen.ruhttp://regeneratedprotein.ruhttp://reinvestmentplan.ruhttp://safedrilling.ruhttp://sagprofile.ruhttp://salestypelease.ruhttp://samplinginterval.ruhttp://satellitehydrology.ruhttp://scarcecommodity.ruhttp://scrapermat.ruhttp://screwingunit.ruhttp://seawaterpump.ruhttp://secondaryblock.ruhttp://secularclergy.ruhttp://seismicefficiency.ruhttp://selectivediffuser.ruhttp://semiasphalticflux.ruhttp://semifinishmachining.ruhttp://spicetrade.ruhttp://spysale.ru
http://stungun.ruhttp://tacticaldiameter.ruhttp://tailstockcenter.ruhttp://tamecurve.ruhttp://tapecorrection.ruhttp://tappingchuck.ruhttp://taskreasoning.ruhttp://technicalgrade.ruhttp://telangiectaticlipoma.ruhttp://telescopicdamper.ruhttp://temperateclimate.ruhttp://temperedmeasure.ruhttp://tenementbuilding.rutuchkashttp://ultramaficrock.ruhttp://ultraviolettesting.ru


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 26 posts ]  Go to page 1, 2  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group