Jump to content

[1.1.3] AntennaRange 1.11.4 - Enforce and Encourage Antenna Diversity


toadicus

Recommended Posts

As a side note: There's been some discussion of this general problem in the MM thread recently, and sabian has indicated a willingness to create a different check that would only trigger if a DLL is installed for a module.  Which might save @toadicus some work here.

Link to comment
Share on other sites

@rasta013, the short answer is "no, it wouldn't detect RT based on MM patches".  I'd actually look through the list of loaded assemblies (which is the .NET word for libraries full o' code) that KSP has pulled in, and check if any of them call themselves "RemoteTech", and if so, shut the whole thing down.  That is the original way that ModuleManager did :NEEDS (checking by folder and :FOR declarations was added to the :NEEDS feature later on), and it's how the potential future check that @DStaal mentioned would also work.  In this case, AntennaRange (and presumably future-ModuleManager) would only be fooled if someone else compiled an assembly and intentionally named it RemoteTech, but actually did something else with it.  That'd be a problem in need of some other form of management, though, and there are even ways to get a bit deeper than that.

Link to comment
Share on other sites

1 minute ago, toadicus said:

@rasta013, the short answer is "no, it wouldn't detect RT based on MM patches".  I'd actually look through the list of loaded assemblies (which is the .NET word for libraries full o' code) that KSP has pulled in, and check if any of them call themselves "RemoteTech", and if so, shut the whole thing down.  That is the original way that ModuleManager did :NEEDS (checking by folder and :FOR declarations was added to the :NEEDS feature later on), and it's how the potential future check that @DStaal mentioned would also work.  In this case, AntennaRange (and presumably future-ModuleManager) would only be fooled if someone else compiled an assembly and intentionally named it RemoteTech, but actually did something else with it.  That'd be a problem in need of some other form of management, though, and there are even ways to get a bit deeper than that.

Well I like the sounds of both of these ideas! :D

From the perspective of a person who writes MM patches (seemingly) more than I play this would be really nice to see whether it's for all of MM or for AR only. It certainly would solve a lot of the little nag issues if it could be for MM but even if you end up doing it only for AR that would be schweet and one less headache for all involved.

Link to comment
Share on other sites

@rasta013, this is an MM feature, so it would apply to anyone who uses the feature in this way.  Most uses of the :NEEDS feature is a positive check; e.g. an antenna patch that uses :NEEDS[AntennaRange], so it only applies when AR is installed.  I use something similar between EVAManager and TACLS; a patch with :NEEDS[TacLifeSupport] changes the ElectricCharge use of the EVA antenna so it fits better with the way TaranisElsu did ElectricCharge for EVAs.

In general it's fine for patches to be pretty free with the positive check.  If you get a false positive and add a module that isn't actually installed, KSP just skips the definition and moves on.  If you get a false positive and unbalance some parts you might be sad, or you might not even notice.  But, if you're using patches that intentionally rebalance parts in response to the presence of other mods, it's probably intentional and the risk and impact of a false positive is relatively minor.

I'm using the check in a negative sense: :NEEDS[!RemoteTech].  The intention is to disable AntennaRange functionality when RemoteTech is installed, which I'm doing by preventing the addition of the modules on the parts I manage.  But, the scope of the NEEDS check has expanded back then, and so have the number of parts intended for use with either AntennaRange OR RemoteTech.  The lack of a standard among all of the patch and part authors, and the broad scope of the positive NEEDS check means that false positives are easy to have, and they wind up shutting the whole thing down, which is a pretty major consequence.

Link to comment
Share on other sites

@toadicus, I agree completely because in the past when I first started writing MM patches I caused myself no small amounts of trouble by not fully understanding the syntax and how it was handled by MM.  The [FOR] caught me more than once before I realized just how much trouble I could get myself into through incorrect usage of it.  Mostly I was referring to liking the idea of a possible change by sabian for MM to improve the process for all MM patches or your idea to deal with the problems that can be caused in AR by a bad RT patch.  The MM solution would be really amazing as it would avoid pitfalls across every mod, but even if he doesn't do it and you implement your solution strictly for AR I'll take anything I can get to remove one less headache that crops up regularly. :)

Link to comment
Share on other sites

I will edit my config files tonight and upload a new version of Antennas that replaces FOR with NEEDS.  Thank you @DuoDex for pinging me on this, like I said in my mod thread this is the first mod I've made so it's still a learning process, sorry for breaking Antenna Range in the process. 

 

Edit:

And done, look for version 1.4, it should show up on CKAN before too long.

Edited by DTPhantom
Link to comment
Share on other sites

Just for info's sake in case people don't check back there often...I've recently updated the compatibility section of the AR wiki with links to patches for:

Antennas, AIES Aerospace antennas (the antennas work fine in 1.1.2), Bluedog Design Bureau, ORIGAMI Folding Antennas and ProbesPlus!

Enjoy!  I'll be adding more soon including one for the community updated version of Ven's Stock Revamp and the SSTU package under development.

Link to comment
Share on other sites

Is anyone else having trouble with kerbals transmitting EVA reports?  I'm sure I used to be able to transmit directly from the kerbal before.

Now I get the message that the transmission has happened successfully but there is no transmission time (the starting transmission and completed messages both appear instantly) and the science is never actually sent.

Can't see anything in the logfiles.  Tried it in an almost-stock game and it still didn't work.

Using KSP_x64.exe V1.1.2 on Windows 7

 

Link to comment
Share on other sites

53 minutes ago, Z-Key Aerospace said:

Is anyone else having trouble with kerbals transmitting EVA reports?  I'm sure I used to be able to transmit directly from the kerbal before.

Now I get the message that the transmission has happened successfully but there is no transmission time (the starting transmission and completed messages both appear instantly) and the science is never actually sent.

Can't see anything in the logfiles.  Tried it in an almost-stock game and it still didn't work.

Using KSP_x64.exe V1.1.2 on Windows 7

 

Are you using either ForScience! or Automated Science Sampler?  If you are, when on EVA and and report runs it is immediately and automagically stored in your ship.  Typically it goes straight to the antenna with AR installed or to the command pod if no antenna is there.  Even if you're not running either of those there's another piece that will affect you...

Spoiler

EVA_MODULE
{
    name = ModuleLimitedDataTransmitter

    nominalRange = 1389
    simpleRange = 5000
    maxPowerFactor = 1
    maxDataFactor = 1

    packetInterval = 0.2
    packetSize = 1
    packetResourceCost = 6.25

    requiredResource = ElectricCharge
}

With that kind of nominal range and PF/DF your range is going to be extremely limited.  To be exact, with the default AR configuration this will be your max range based on your tracking station level:

KSC 1 : 19.821 km

KSC2: 9,910.456 km

KSC 3: 31,339.613 km

At KSC 2 you can almost reach the Mun, KSC 3 will make it 75% to Minmus but that's it.  Typically though you'd relay through your antenna on your craft but if you don't have one... :D 

EDIT: Or if you do and it can't reach KSC :sealed:

Edited by rasta013
Or if it can't reach KSC...
Link to comment
Share on other sites

Isolating bugs involved in some nasty behavior.

Marking this output spat out in the log in case it's relevant.

Quote

[EXC 21:09:05.256] ArgumentNullException: Argument cannot be null.
Parameter name: Vessel.getModulesOfType<PartModule>: 'vessel' argument cannot be null.
 ToadicusTools.Extensions.VesselExtensions.getModulesOfType[PartModule] (.Vessel vessel)
 ToadicusTools.Extensions.VesselExtensions.CurrentCommand (.Vessel vessel)
 AntennaRange.ARFlightController.FixedUpdate ()

 

Link to comment
Share on other sites

4 hours ago, toadicus said:

@AdmiralTigerclaw, certainly it shouldn't be doing that, but since it never does that for me I need at least a bit more context if you want my help. :)

 

I'm still investigating the cause, but it seems to be the result of some kind of loading problem and I'm trying to find the root mod causing it in the first place.

1: I have built a plane and fly it for some survey missions across Kerbin.  (Multi-hour flight)

2: I return to KSC, land, and go back to the space center.

3: After setting up a new set of missions, I select the aircraft in the SPH or the runway selector.

4: Upon attempt to load to the runway, the game appears to not be able to load the vehicle, the camera gets stuck about 400 meters up and behind the runway, menus become unresponsive, and the debug screen starts spamming all kinds of Null Ref exceptions.  That particular one just happens to be the very first exception in the log after it loads the flight scene, right after aircraft load.

 

I use an obscene amount of mods, so finding the problem can be a bit of a problem.  I suspect this is a trickle-down error in response to the vehicle just not appearing.  But I'm not sure.  It does appear at the head of several other types of null refs, including BDArmory and NAVHud exceptions.  But they read like the problem involves the fact that there's no object to 'attach' to is the problem.

I also had a FASA probe core for an earlier mission that spammed Null Refs at me once it was in space for the entire duration it was loaded, and I've had problems after ditching tests in the ocean where the menus also became unresponsive after splashcrunch.

 

Overall, the problem is a bit troublesome to produce.  I have to hard-kill KSP to get control back, and once I reboot the game, I have to fly to reproduce the error.

Link to comment
Share on other sites

@AdmiralTigerclaw, because of the specific class that's originating that exception, your interpretation of "trickle-down...from the vessel not appearing" fits just fine.  That's not a problem with one of my modules being loaded and doing something funny, thereby hosing up the rest of the load cycle or something.  That's one of my control behaviors (specifically, the one that takes control away from you if you don't have signal on a probe) checking to see if it needs to take control away from you, and being surprised to find no vessel where the vessel should be.

Just in case, though, here's a quick dev build that should trap that error and stop it from happening: [zip] [tar.gz] [tar.xz]

Hope that helps, if only to speed up narrowing things down.

Link to comment
Share on other sites

Trouble transmitting EVA reports from a kerbal.

Thanks for the help so far.

I have only the contents of the zip file in the OP in my GameData dir (well, and the Squad dir).

I start a new science game.

I launch a MK1 command pod+red-and-white antenna and EVA my kerbal.

I do an EVA report while hanging on to the command pod on the launch pad.  It says I am flying low over kerbin.

I hit transmit.

I get a message saying the transmission is complete but the EVA report hasn't actually been received.  I sent a debug comment before and after my EVA.  This is what I got...

Quote

[WRN 14:10:32.383] +++++++++++++++++++++ RUNTIME COMMENT +++++++++++++++++++++
[WRN 14:10:32.384] Time: 1:10:32 PM
[WRN 14:10:32.385] Comment: MOOSE TEST
[WRN 14:10:32.385] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[LOG 14:10:46.290] [EVAPartResource] Caught OnCrewOnEva event to part () containing this resource (ElectricCharge)
[LOG 14:10:46.292] [Progress Node Reached]: SurfaceEVA
[LOG 14:10:46.293] [Progress Node Reached]: Kerbin
[LOG 14:10:46.293] [Progress Node Complete]: SurfaceEVA
[LOG 14:10:46.297] [F: 11583]: [00:00:00]: Jebediah Kerman from Untitled Space Craft went on EVA.
[LOG 14:10:46.386] [FLIGHT GLOBALS]: Switching To Vessel Jebediah Kerman ----------------------
[LOG 14:10:46.387] [PlanetariumCamera]: Focus: Jebediah Kerman
[WRN 14:10:46.393] [Part]: kerbalEVA (Jebediah Kerman) holds crew but has no interior model defined!
[LOG 14:10:46.396] RelayDatabase: Dirtying cache for vessel Jebediah Kerman
[LOG 14:10:46.425] [Progress Node Reached]: RecordsAltitude
[LOG 14:10:46.425] [Progress Node Reached]: RecordsSpeed
[LOG 14:10:46.426] [Progress Node Reached]: RecordsDistance
[LOG 14:10:47.633] [AsteroidSpawner]: No new objects this time. (Odds are 1:2)
[LOG 14:10:58.165] [Experiments]: Setting FX Modules to 1...
[LOG 14:10:58.166] [Experiments]: FX Modules set: 1
[LOG 14:11:00.784] Sending data to vessel comms. 1 devices to choose from. Will try to pick the best one
[LOG 14:11:00.791] [Experiments]: Setting FX Modules to 0...
[LOG 14:11:00.791] [Experiments]: FX Modules set: 0
[LOG 14:11:03.024] [AsteroidSpawner]: No new objects this time. (Odds are 1:2)
[LOG 14:11:09.770] [F: 12845]: [00:00:22]: Jebediah Kerman boarded Mk1 Command Pod on Untitled Space Craft.
[LOG 14:11:09.770] [FLIGHT GLOBALS]: Switching To Vessel Untitled Space Craft ----------------------
[LOG 14:11:09.771] [PlanetariumCamera]: Focus: Untitled Space Craft
[LOG 14:11:09.777] Camera Mode: AUTO
[LOG 14:11:09.798] RelayDatabase: Dirtying cache for vessel Untitled Space Craft
[LOG 14:11:09.806] RelayDatabase: Dirtying cache for vessel Jebediah Kerman
[LOG 14:11:18.437] [AsteroidSpawner]: New object found near Kerbin: Ast. RWZ-885!
[LOG 14:11:22.616] GenericAppFrame: auto scaling app.
[LOG 14:11:22.633] GenericAppFrame: auto scaling app.
[WRN 14:11:26.041] +++++++++++++++++++++ RUNTIME COMMENT +++++++++++++++++++++
[WRN 14:11:26.042] Time: 1:11:26 PM
[WRN 14:11:26.042] Comment: MOOSE TEST DONE
[WRN 14:11:26.043] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

Link to comment
Share on other sites

@Z-Key Aerospace, I've identified an issue with correctly loading the cost and size of data packets for EVA Kerbals.  Hard to send data when your maximum capacity is zero. :wink:  I'll have a fix ready soon.

Thanks for the straightforward repro steps!

EDIT: Fix committed; I'll upload tonight or tomorrow!

Edited by toadicus
Link to comment
Share on other sites

3 hours ago, Z-Key Aerospace said:

Trouble transmitting EVA reports from a kerbal.

Thanks for the help so far.

I have only the contents of the zip file in the OP in my GameData dir (well, and the Squad dir).

I start a new science game.

I launch a MK1 command pod+red-and-white antenna and EVA my kerbal.

I do an EVA report while hanging on to the command pod on the launch pad.  It says I am flying low over kerbin.

I hit transmit.

I get a message saying the transmission is complete but the EVA report hasn't actually been received.  I sent a debug comment before and after my EVA.  This is what I got...

 

1 hour ago, toadicus said:

@Z-Key Aerospace, I've identified an issue with correctly loading the cost and size of data packets for EVA Kerbals.  Hard to send data when your maximum capacity is zero. :wink:  I'll have a fix ready soon.

Thanks for the straightforward repro steps!

EDIT: Fix committed; I'll upload tonight or tomorrow!

Nice find!  I hadn't even noticed because I've been using ForScience! while waiting for Science Alert to come back.  

Link to comment
Share on other sites

@toadicus Good evening Sir.  I have just used CKAN to mod my first game, and found your mod to be a realism "plus" to add in that would be a step short of all the responsibility implied in Remote Tech.  However, I have a question.  I note the biggest of the 3 antennas has a range of 225 billion km.  Now, if I install the Extrasolar Planets mod which adds the star Valentine at 9.5 Trillion km, am I correct that I would lose control of any probe I sent there when it had covered less than 1/30th the distance?

Link to comment
Share on other sites

That sounds about right.  :wink:  Note however that by default you won't lose control of the probes - you'll just lose *connection*.  (There is a setting to lose control as well, but I don't think it's checked by default.)  You can get a bit more range by spending power, or by setting up an outer relay probe - or you can look into some of the other antenna packs around - especially ones that support OPM - and see if any have more range.

But on the whole - I'm not actually sure what type of antennas you would need to attach to a probe for something like that in real life.  It would definitely be something designed just for the purpose.

Link to comment
Share on other sites

Well, a relay probe would be a difficult answer, as I would need 25 to 30 probes perfectly spaced between Valentine and Kerbin; and for that much effort I should just build a space-arc and carry all the science-freight back and hand it in! :P

I suppose I will either turn off the mod for the mission, or look for an antenna in another mod with extreme range-  if non-AR antenna mods have range ratings.

Link to comment
Share on other sites

There are AR antenna packs - or adaptations for RemoteTech antenna packs.  Some with more range than the standard antennas, I know that.  Though if it'd be enough to be useful I don't know.  :wink:

Really, if you think about it, sending the science back is likely the way we'd try to do it in real life - the time delay would be huge on it's own, as well as the engineering challenge of building the antennas.  If you can go there, sending back the science is probably as easy as transmitting it.  I'll recommend the science crates from RoverDude's exploration pack - you can stuff the science in one of those and send a small probe back, instead of your whole ship.  :wink:

Link to comment
Share on other sites

8 hours ago, GarrisonChisholm said:

@toadicus Good evening Sir.  I have just used CKAN to mod my first game, and found your mod to be a realism "plus" to add in that would be a step short of all the responsibility implied in Remote Tech.  However, I have a question.  I note the biggest of the 3 antennas has a range of 225 billion km.  Now, if I install the Extrasolar Planets mod which adds the star Valentine at 9.5 Trillion km, am I correct that I would lose control of any probe I sent there when it had covered less than 1/30th the distance?

OK - yes, for the ExtraSolar planets mod you will definitely lose connection to the probe and it's actually worse than you think.  Kerbal scales are measured in meters not kilometers.  To make a relay network capable of talking to Valentine you would need more like 200-300.  Obviously not a real choice.  Now, that said, there are plenty of mods out there that add additional antennas into the game and if you check the AR github wiki you will find a compatibility patches section there where there are packs that include configurations for use in the Outer Planets Mod.  To maintain realism the distance restriction exists within AR to enforce antenna diversity but it doesn't really jive with real life.  Real antennas broadcast in a particular direction and with a large enough ground side baseband you could pick up a walkie talkie from Pluto.  Signal strength is everything.  So with that in mind, if you want to use the Extrasolar Planets mod and have an antenna(s) that can reach there you aren't really breaking realism but you would be breaking kebalized distances as setup by AR.  Setting up a config file for AR is super easy and you can reference the wiki for information and look at the patches to see how to build one for yourself.  In doing so, you would be able to maintain a wide variety of antennas that can work only within the solar system and have that special antenna for reaching Valentine and how you set it up is under your control.  This would also allow you to avoid having to kill a nice mod just to use another nice mod.  If you want help in trying to set something like this up, ask away! :D

Link to comment
Share on other sites

@GarrisonChisholm, as has been indicated by others here, yes, you'd be well out of the longest antenna's range at Valentine. :)  I know some mods that add some moderately-longer range planets (like Outer Planets) package ModuleManager patches to increase the range of the AntennaRange antennas, but in your case I think a whole new part would be in order.  I'm not a part author and can't really make it for you, but if you have a part that you think fits the role, as rasta013 said, writing an AR config for it is easy.  I'd recommend making a "hyperluminal relay" part with a range of many lightyears, with a very large packet size (since you wouldn't want to operate such a device for very long) and a very large packet cost (since sending data via The Twisting Nether is surely very expensive).  Something that you'd probably want one of the big nuclear reactors or several sets of giga panels to operate.  Of course, if you're operating it primarily as a relay, it's on you to make sure you actually build the relay vessel that way, since I can't enforce charge use during flight. :wink:

Depending on the nature of your interstellar mod, it might even be fun to make the hyperluminal part operate on a resource other than ElectricCharge, like CapacitorFlux or whatever the stuff of hyperspace is in your world. :)

Link to comment
Share on other sites

Here's some fun (psuedo)-science.

Let's suppose for the sake of argument that our hyperluminal relay operates by essentially re-creating the data in the new location.  So, the energy cost is going to be somewhere on the order of E=mc², since we're spontaneously coverting our input energy into matter.  We'll handwave the part where we're creating it a few lightyears away.

Per this cool post I found on StackExchange about the actual mass of stored data on a hard drive, the material holding data on a hard drive in 2012 massed about 0.6 µg per gigabyte.  It's a little unclear how Kerbal data unit ("T", as in "MiT", presumably mebi-T) relate to earth units, but for fun let's say the "T" is related to "ternary" in the same way that "B" is sort of related to "binary".  This means that one Kerbal MiT (mebi-tryte?) can hold about the same amount of info as 3.25 GiB (gibi-byte).  So, let's figure the mass of a mebitryte to be the mass of a gibibyte divided bytimes 3.25, or about 0.19 µg2 µg.

This gives us a conversion energy on the order of 17 MJ180 MJ.  A common interpretation for energy consumption in KSP is 1 EC/sec = 1 kW.  Converting this back to energy units means that 1 EC = 1 kJ, so the energy cost to transmit one mebitryte of data through our hyperluminal data cannon is going to be 0.19 µg/MiT * c^2 * 1 EC / 1 kJ = 17088 EC/MiT2 µg/MiT * c² * 1 EC/kJ = 180200 EC.

For even more fun: if you manipulate the relay into sending 71 MiT/sec6.7 MiT/sec, its consumption will be one point twenty-one (thirty-three) jiggawatts. :wink:

Edited by toadicus
Fixed divide vs. multiply, to my deep and unending shame.
Link to comment
Share on other sites

6 hours ago, toadicus said:

Here's some fun (psuedo)-science.

Let's suppose for the sake of argument that our hyperluminal relay operates by essentially re-creating the data in the new location.  So, the energy cost is going to be somewhere on the order of E=mc², since we're spontaneously coverting our input energy into matter.  We'll handwave the part where we're creating it a few lightyears away.

Per this cool post I found on StackExchange about the actual mass of stored data on a hard drive, the material holding data on a hard drive in 2012 massed about 0.6 µg per gigabyte.  It's a little unclear how Kerbal data unit ("T", as in "MiT", presumably mebi-T) relate to earth units, but for fun let's say the "T" is related to "ternary" in the same way that "B" is sort of related to "binary".  This means that one Kerbal MiT (mebi-tryte?) can hold about the same amount of info as 3.25 GiB (gibi-byte).  So, let's figure the mass of a mebitryte to be the mass of a gibibyte divided bytimes 3.25, or about 0.19 µg2 µg.

This gives us a conversion energy on the order of 17 MJ180 MJ.  A common interpretation for energy consumption in KSP is 1 EC/sec = 1 kW.  Converting this back to energy units means that 1 EC = 1 kJ, so the energy cost to transmit one mebitryte of data through our hyperluminal data cannon is going to be 0.19 µg/MiT * c^2 * 1 EC / 1 kJ = 17088 EC/MiT2 µg/MiT * c² * 1 EC/kJ = 180200 EC.

For even more fun: if you manipulate the relay into sending 71 MiT/sec6.7 MiT/sec, its consumption will be one point twenty-one (thirty-three) jiggawatts. :wink:

This was a brilliant theoretical exploration to interrupt my work-day! Thank you. :P  - & also I think fertile intellectual loam to begin germinating a new tweak to the mod.  :)

Though a "Hyper Luminal Relay" would be excellent for/with the Interstellar mod, I was actually thinking about a Voyager type mission (minus the year-long transmission delay from Valentine), and so a moderately weak broadcaster from Valentine that would require perhaps a larger ear at Kerbin- say, receiving satellites orbiting at opposite sides of Kerbin to enlarge the "gain"?...   not sure how that could be implemented.

14 hours ago, rasta013 said:

OK - yes, for the ExtraSolar planets mod you will definitely lose connection to the probe and it's actually worse than you think.  Kerbal scales are measured in meters not kilometers.  To make a relay network capable of talking to Valentine you would need more like 200-300.  Obviously not a real choice.  Now, that said, there are plenty of mods out there that add additional antennas into the game and if you check the AR github wiki you will find a compatibility patches section there where there are packs that include configurations for use in the Outer Planets Mod.  To maintain realism the distance restriction exists within AR to enforce antenna diversity but it doesn't really jive with real life.  Real antennas broadcast in a particular direction and with a large enough ground side baseband you could pick up a walkie talkie from Pluto.  Signal strength is everything.  So with that in mind, if you want to use the Extrasolar Planets mod and have an antenna(s) that can reach there you aren't really breaking realism but you would be breaking kebalized distances as setup by AR.  Setting up a config file for AR is super easy and you can reference the wiki for information and look at the patches to see how to build one for yourself.  In doing so, you would be able to maintain a wide variety of antennas that can work only within the solar system and have that special antenna for reaching Valentine and how you set it up is under your control.  This would also allow you to avoid having to kill a nice mod just to use another nice mod.  If you want help in trying to set something like this up, ask away! :D

I may take you up on this!  Let me think about it.  :)

Edited by GarrisonChisholm
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...